检查具有给定值的单选按钮的值

时间:2011-11-23 17:58:56

标签: javascript jquery

我尝试实现以下代码:

  <input type="radio" name="yesno2" value="yes" style="outline:0;"/>Yes
          <input type="radio" name="yesno2" value="no" style="margin-left:30px;    outline:0;"/>No</div>

在我的javascript中:

  <script>
if ($("input[name='yesno2']").val() == "no") {
  alert("ddd");
 }
  </script>

如果我选中“否”,它应该显示警报窗口,但它没有显示。对不起,如果我只是告诉你部分代码,任何人都可以告诉我我做错了什么,提前谢谢!

4 个答案:

答案 0 :(得分:2)

我相信你想使用jQuery change()

$("input[name='yesno2']").change(function () {

    if ($(this).val() == "no") {
      alert("ddd");
     }

});

以下是一个工作示例http://jsfiddle.net/hnqSb/

答案 1 :(得分:1)

您需要绑定一个事件,例如点击或更改:

$("input[name='yesno2']").change(function () {
  if ($(this).val() == "no") {
    alert("ddd");
   }
});

原因很简单:您的初始代码会立即执行,当时该值不会为“否”。您希望在实际需要该值的位置延迟并评估代码。这可能会有变化,也可能是在您的流程中的另一个步骤中,例如在表单提交期间。

答案 2 :(得分:1)

一个基本问题是你正在使用的选择器的形式总是会给你匹配的第一个输入的值。您应该应用处理程序,然后在处理程序中使用this来查找实际生成事件的元素。您可以从该元素中获取值并进行检查。

<script type="text/javascript">
   $(function() { // apply handlers after document loads
       $('[name="yesno2"]').change( function() { // apply a change handler to both inputs
            if ($(this).val() == "no") {// get value from modified input, not first input
                alert('ddd');
            }
       });
   });
</script>

我们使用更改处理程序而不是单击处理程序的原因是,无线电的值可能会基于单击关联的标签元素而更改,假设您已正确设置,而不是仅通过单击单选按钮。 / p>

http://jsfiddle.net/Q7geW/

上查看示例小提琴

答案 3 :(得分:0)

<input type="radio" name="yesno2" value="yes" style="outline:0;"/>Yes
<input type="radio" name="yesno2" value="no" style="margin-left:30px;    outline:0;"/>No</div>
<br/><input type="button" id="btn1" value="GetRadioChecked">


 $("#btn1").click(function(){

        if($("input[name=yesno2]:checked ").val()=="no")
        {
            alert("no clicked");
        }
        else if($("input[name=yesno2]:checked").val()=="yes")
        {
             alert("yes checked ");
        }
        else        
       {
           alert("nothing checked !")
       }

    });

工作样本 http://jsfiddle.net/WxmpJ/