如何在Jquery Javascript中使用嵌套if else

时间:2014-07-30 02:26:46

标签: javascript jquery

我在这里尝试做的是进行表单验证。我这里有3个元素,a,b和c。

我需要做的是:

编辑:只是为了纠正我的问题

若是!= 0 || a!='' validation_holder = 1;

否则,如果var a的值大于零,则比较b和c的值,c不应大于b

如果没有错误提交表单。

我试图在嵌套的if中做这件事。

这就是我现在所拥有的。 http://jsfiddle.net/jWL9s/2

任何帮助都会表示赞赏。

<form action="" method="post" id="register_form"  name="register_form">
PO<input type="text" id="a" value="0"/><br/>
Remain<input type="text" id="b" value="10"/><br/>
PR<input type="text" id="c" value="5"/><br/>
<span class="alert"></span>
<input name="edt_submit" type="submit" value="Edit">
</form>

jQuery(function($) {
var validation_holder;

$("form#register_form input[name='edt_submit']").click(function() {

var validation_holder = 0;

    var a           = $("form#register_form input[id='a']").val();
    var b           = $("form#register_form input[id='b']").val();
    var c           = $("form#register_form input[id='c']").val();

    if(a != 0 && a != '') {
        $("span.alert").html("You Cannot edit").addClass('validate');
        validation_holder = 1;
    } else {
    if( b > c ) {
        $("span.alert").html("Value is Greater than").addClass('validate');
        validation_holder = 1;
        } else {
        $("span.alert").html("");
        }
    }

    if(validation_holder == 1) { // if have a field is blank, return false
        $("p.validate_msg").slideDown("fast");
        return false;
    }  validation_holder = 0; // else return true
    /* validation End */    
}); // click End 

}); // jQuery End

2 个答案:

答案 0 :(得分:1)

您是否有机会寻找this solution (updated fiddle)

标记:

<form id="register-form">
    <label for="a">PO</label>
    <input type="text" id="a" value="0"/>

    <label for="b">Remain</label>
    <input type="text" id="b" value="10"/>

    <label for="c">PR</label>
    <input type="text" id="c" value="5"/>

    <p id="message"></p>

    <input type="submit" value="Edit Summary">
</form>

JavaScript的:

var validate = function(e) {
  e.stopPropagation();
  e.preventDefault();
  var a = $('#a').val();
  var b = parseInt($('#b').val());
  var c = parseInt($('#c').val());
  var message = $('#message');
  if(a === '' ||  parseInt(a) === 0) {
    message.html('You cannot edit.');
  } else {
    if( c > b ) {
      message.html('Value is Greater.');
    } else {
      message.html('');
      this.submit();
    }
  }
}
$('#register-form').on('submit', validate);

答案 1 :(得分:0)

请注意, a b c 是字符串,因为表单控件值是字符串。

  

如果a == 0或a ==''验证并显示消息'您无法编辑QTY'

测试看起来很好,因为==会将 a 的字符串值转换为数字,因为另一个值是Abstract Equality Comparison Algorithm的数字,所以如果 a 为零,空字符串或仅为空格的字符串,执行以下语句。

  

如果是!= 0 || a!='',比较c的值&gt; b验证并显示消息“值大于”

这似乎很好,除了你不需要第二次测试,因为它已经由a != 0覆盖,因为根据上面的算法,空字符串或仅包含空格的字符串将转换为0

请注意,表单控件必须具有成功的名称,ID是合适的。

表达式:$("form#register_form input[id='a']").val()可以是$('#a').val()