2015-03-22 7 views
0

Я новичок в этом и очень новичок в Javascript и концепции программирования в целом. Часть формы, над которой я работаю, требует вычисления разницы между двумя ценами. Я знаю, что число с плавающей точкой невелико, поэтому я выяснил эту часть. И он вычисляет и вводит его в поле 3. Единственное, что я не могу понять, это сделать так, чтобы, если поле 1 или 2 пуст, функция не запускается. Он должен работать только при заполнении обоих полей. Вот мой пример кода:Не запускайте функцию, если пустое поле

<input type="text" id="1"> </input><br/> 
<input type="text" id="2"> </input><br/> 
<input type="text" id="3"> </input><br/> 
<br/><br/><br/> 
<p id="test"></p> 

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 
<script> 
function emptyCheck(){ 
    if ($("#1") = ""){ 
     $("#3").val(""); 
    } 
    else if ($("#2") = ""){ 
     $("#3").val(""); 
    } 
    else{ 
     rateDiff(); 
    } 
} 

function rateDiff(){ 
    var clientRate = $("#1").val() * 100; 
    var agentRate = $("#2").val() * 100; 
    var fareDiff = clientRate - agentRate; 
    var fareDiffDec = fareDiff/100; 

    $("#3").val(fareDiffDec.toFixed(2)); 
} 

$("#1").keyup(emptyCheck); 
$("#2").keyup(emptyCheck); 
</script> 

Я не понимаю, что я здесь делаю неправильно. Может кто-то указать мне верное направление?

ответ

3
if ($("#1") = ""){ 

должно быть

if ($("#1").val() == ""){ 

же для $("#2") = ""

$("#1") является элементом JQuery, а не значение. Также вы положили = вместо ==

+0

Благодаря @Stephen! Это именно то, что я искал! :) – Bloodlvst

0
$("#1") = "") 

Должно быть

$("#1").val() == "") 

One = используется для присваивания значения, в то время как два == это сделать сравнение.

0

Просто используйте "falsey" из JavaScript и значения:

function emptyCheck(){ 
    if (!$("#1").val() || !$("#2").val()){ 
     $("#3").val(""); 
    } 
    else{ 
     rateDiff(); 
    } 
} 

ПРИМЕЧАНИЕ: Вы бы лучше разборе номера для обработки альфа запись:

function emptyCheck() { 
    if (!parseFloat($("#1").val()) || !parseFloat($("#2").val())) { 
     $("#3").val(""); 
    } else { 
     rateDiff(); 
    } 
} 

function rateDiff() { 
    var clientRate = parseFloat($("#1").val()) * 100; 
    var agentRate = parseFloat($("#2").val()) * 100; 
    var fareDiff = clientRate - agentRate; 
    var fareDiffDec = fareDiff/100; 

    $("#3").val(fareDiffDec.toFixed(2)); 
} 

$("#1").keyup(emptyCheck); 
$("#2").keyup(emptyCheck); 
+0

Обратите внимание, что вы можете решить, как обрабатывать «числа», которые анализируют, такие как 1e1 (что равно 10) и 1e2, что равно 100 и т. Д. –

Смежные вопросы