Jquery字符串和逻辑OR

时间:2013-07-12 07:20:42

标签: javascript jquery

以下代码行有什么问题......

它一直抱怨systax错误......就像那样

if( (radioval === "undefined")  || (radioval === null) || (radioval === "null") ) { 

行动中的完整条件

if($('#digitallogin').is(":checked")){
              var radioval = $("input[name=certificateradio]:checked").val();//its giving the string "user" 
                if( (radioval === "undefined")  || (radioval === null) || (radioval === "null") ) {   //this line 
                    $("#login_error").text("please select the signin certificate");
                        return false;
                 }

          } 

enter image description here

感谢您的帮助。

5 个答案:

答案 0 :(得分:2)

代码中没有语法错误。如果代码有语法错误,Firebug控制台(而不是Watch面板)中会出现错误消息,代码根本不会运行。你永远不会到达你的断点。

屏幕截图中的语法错误位于 watch 表达式中。删除监视表达式,这些错误消息将消失。

在更新的屏幕截图中,我可以看到语法错误。仔细查看您的监视表达式(在此重新格式化以避免滚动):

if(
    (radioval === "undefined")  ||
    (radioval === null) ||
    (radioval === "null")
)

这不是表达,而是if声明。如果要将其用作监视表达式,则只需要表达 in if语句。也就是说,删除if(和最终)

关于您正在进行的特定测试,如果没有选择任何元素,jQuery的.val()方法会返回undefined。请注意,jQuery文档中存在错误:它表示当没有匹配元素时.val()返回null。这是不正确的;在这种情况下,它返回undefined。以下the line of code in the jQuery source返回undefined(因为它是一个没有值的简单return;。)

但这是undefined值,而不是字符串"undefined"。您可以使用radioval === undefined对此进行测试。或者您可以使用radioval == null。请注意==而不是===;此测试与nullundefined值匹配。如果jQuery团队决定更改代码以匹配文档并开始返回null而不是undefined,那么这可能是最安全的选择。 (不太可能,但你永远不会知道。)通过测试radioval == null,它将测试任一值。

答案 1 :(得分:0)

如果是多选值,

.val()会返回字符串值nullArray,因此您可以尝试:

if (/null|undefined/i.test(radioval) || !radioval.length){ /*...*/ }

由于您似乎检查了[{1}}中的[{1}}被检查,因此也可能

$("input[name=certificateradio]")

甚至更短

if( ( !$("input[name=certificateradio]:checked").length ) {
  $("#login_error").text("please select the signin certificate");
   return false;
}

答案 2 :(得分:0)

尝试

if( (typeof radioval === "undefined")  || (radioval === null) || (radioval == "null") ) { 

答案 3 :(得分:0)

在第三次无线电比较中    radioval ==“null”而不是=== null

答案 4 :(得分:0)

$( “输入[名称= certificateradio]:检查”)VAL();如果未选中,则返回undefined(typeof undefined === undefined)或“on”(typeof“on”=== string)如果已选中。

一个小例子:

<input name="certificateradio" type="checkbox" /> 
<button>run</button>

$("button").click(function(){
    console.log($("input[name=certificateradio]:checked").val());
    console.log(typeof $("input[name=certificateradio]:checked").val());
});

http://jsfiddle.net/x2uw4/1/

尝试使用:

if($("input[name=certificateradio]:checked").val() ==="on"){
   ...
}