Если условие выполняется, когда оно не должно быть - PullRequest
0 голосов
/ 28 августа 2018

Я запускаю if-statement, чтобы проверить, не является ли вход для загрузки файла не пустым. Я проверяю fileNameVal со следующим кодом if (fileNameVal != null) {. Кажется, что он всегда работает как истина, когда не должен, если в файле нет ничего внутри.

Всегда отображается строка кода fileShow.text().

Кто-нибудь видит, что я делаю не так?

var fileShow = $('#fileUploadMessage');
	fileShow.hide();
	var fileNameVal = '';
    	
    $('#uploadedFileTest').change(function () {
		fileNameVal = $('#uploadedFileTest').val();
		console.log(fileNameVal);
	});
    
    
    $("form#submit").submit(function (e) {
        $.LoadingOverlay("show");
         if (fileNameVal != null) {
			fileShow.text('Please wait while your file uploads.');
			fileShow.show();
		}
    });
#fileUploadMessage {
    	position: fixed;
        bottom: 20vh;
    	left: 50%;
    	-webkit-transform: translateX(-50%);transform: translateX(-50%);
    	color: #000;
    	font-size: 3rem;
    	font-family: 'Muli', sans-serif;
    	letter-spacing: .2rem;
    	text-align: center;
    	display: block;
    	z-index: 9999999999999999999999999999999999999;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="" method="POST" id="submit">
    	<input id="first_name" type="text">
    	<input type="file" name="uploadedFile" class="inputfile" id="uploadedFileTest" data-multiple-caption="{count} files selected" multiple>
    	<p id="fileStatus">Upload File</p>
    	<button type="submit">SEND</button>
    </form>
    <p id="fileUploadMessage"></p>

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

просто

if (fileNameVal)

он вернет false, если он содержит пустую строку или нулевое или неопределенное значение

0 голосов
/ 28 августа 2018

Вам нужно знать сравнения, строгие сравнения и что ложно в JavaScript

в основном 0, '', "", NAN, null, undefined и false само по себе возвращает false в логическом выражении, все другие литералы, например: 1, "HI", {} будут возвращать true

На этом изображении показаны результаты сравнения (== или! =) И строгого сравнения (=== или! ==)

изображение

с этим, вы можете сделать только

if(fileNameVal)
{//do stuff
}
0 голосов
/ 28 августа 2018

Вы не инициализируете его нулем, а скорее пустой строкой, так что либо:

  1. Замените чек чеком на пустую строку:

    if (fileNameVal != '') {
    
  2. Замените инициализацию так, чтобы она была нулевой, а не пустой:

    var fileNameVal = null;
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...