1

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

它不断抱怨系统税错误..类似

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

          } 

在此处输入图像描述

感谢您提供任何帮助。

4

5 回答 5

2

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

您的屏幕截图中的语法错误在您的手表表达式中。删除监视表达式,这些错误消息就会消失。

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

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

那不是表达,是if陈述。如果要将其用作监视表达式,则只需要语句的表达式if。也就是说,删除if(和 final )

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

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

于 2013-07-12T07:32:42.490 回答
0

.val()返回一个字符串值,null或者Array在多选值的情况下返回一个,因此您可以尝试:

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

由于您似乎在检查 [one of]$("input[name=certificateradio]")被检查,因此可能也足够了

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

甚至更短

if( $('#digitallogin').is(":checked") && 
    !$("input[name=certificateradio]:checked").length ) {
  $("#login_error").text("please select the signin certificate");
  return false;
}
于 2013-07-12T07:24:40.757 回答
0

尝试

if( (typeof radioval === "undefined")  || (radioval === null) || (radioval == "null") ) { 
于 2013-07-12T07:27:53.447 回答
0

在 radioval radioval == "null" 而不是 === null 的第三个比较中

于 2013-07-12T07:28:17.057 回答
0

$("输入[name=certificateradio]:checked").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"){
   ...
}
于 2013-07-12T07:32:41.497 回答