Bloodlvst
Bloodlvst

Reputation: 31

Don't run function if field empty

I'm new here, and very new to Javascript and programming concepts in general. Part of the form I'm working on simlpy needs to calculate the difference between two prices. I do know float numbers are screwy, so I have that part figured out. And it calculates, and inputs it into field 3. The only thing I can't seem to figure out is making it so that if either field 1 or 2 is empty, the function doesn't run. It should only run when both fields are filled. Here's my example code:

<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>

I don't get what I'm doing wrong here. Can anyone point me in the right direction?

Upvotes: 0

Views: 1788

Answers (3)

Mark Schultheiss
Mark Schultheiss

Reputation: 34168

Just use the "falsey" of JavaScript and the values:

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

NOTE: you would be better parsing the numbers to handle alpha entry:

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);

Upvotes: 0

Kyle
Kyle

Reputation: 33701

$("#1") = "")

Should be

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

One = is used to assign a value, while two == is to do a comparison.

Upvotes: 0

Farzher
Farzher

Reputation: 14563

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

should be

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

same for $("#2") = ""

$("#1") is a jquery element, not the value. Also you put = instead of ==

Upvotes: 3

Related Questions