如何获取选择元素的值以及如何对变化采取行动?

发布于 2024-09-29 00:11:17 字数 740 浏览 8 评论 0 原文

jQuery 中的 change() 事件出现问题

$("select[name=cmm]").change(function(){
    total();
});

由于某种原因,“total”函数不可用t 被上面的代码调用。 html 代码是:

  <select name="cmm">
      <option value="none">none</option>
      <option value="one">the first</option>
      <option value="two">the second</option>
  </select>

我是否以错误的方式引用该元素?或者调用函数的方式错误?


更新: 这里的警报功能没有显示,所以我猜更改事件永远不会被调用..

$(document).ready(function() {
$("select[name=cms]").change(function(){
    total();
    alert($("select[name=cms]").length);
});
});

(是的,我一直在使用 doc-ready)

Having a problem with the change() event in jQuery:

$("select[name=cmm]").change(function(){
    total();
});

For some reason the "total" function isn't being called with the code above. The html code is:

  <select name="cmm">
      <option value="none">none</option>
      <option value="one">the first</option>
      <option value="two">the second</option>
  </select>

Am i referring to the element the wrong way or something? Or calling the function the wrong way?


Update:
The alert function here doesn't show up, so I'm guessing the change event is never called..

$(document).ready(function() {
$("select[name=cms]").change(function(){
    total();
    alert($("select[name=cms]").length);
});
});

(and yes, I have been using doc-ready all the time)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

能否归途做我良人 2024-10-06 00:11:17

更新问题:
确保您的代码在 document.ready 处理程序中运行,以便

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});

对于上一个问题:
您缺少选择器上的第二个 m ,它应该是:

$("select[name=cmm]").change(function(){ total(); });

或更短:

$("select[name=cmm]").change(total);

对于第二个,只需使用

var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();

当您指定 option< /code> 它获取第一个 的值,无论选择什么。

For updated question:
Make sure your code is running in a document.ready handler so the <select> element is in the DOM and ready, like this:

$(function() {
  $("select[name=cmm]").change(function(){ total(); });
});

For previous question:
You're missing the second m on your selector, it should be:

$("select[name=cmm]").change(function(){ total(); });

Or shorter:

$("select[name=cmm]").change(total);

For the second, just use .val() directly on the <select> to get the value, like this:

var iets = $("select[name=cmm]").val();
//or when calling .change(total) like above, inside total you can use:
var iets = $(this).val();

When you specify option it gets the value of the first <option>, regardless of what's selected.

何时共饮酒 2024-10-06 00:11:17

我假设这不是 cmcmm 问题,并且您可能太早分配了 onChange 处理程序,这意味着 DOM尚未初始化。

<script type='text/javascript'>//<![CDATA[
    // if your javaScript is initialized before the actual
    // select element liek this, it will not work
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>

你的 javaScript 应该在 DOM 准备好之后执行,所以你必须使用 jQuery 的 document.ready 事件,如下所示:

<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>

或者将其放在有问题的元素后面,如下所示:

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

I'll assume it's not the cm vs. cmm issue, and that you're probably assigning the onChange handler too early, meaning the DOM has not yet been initialized.

<script type='text/javascript'>//<![CDATA[
    // if your javaScript is initialized before the actual
    // select element liek this, it will not work
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>

Your javaScript should be executed after the DOM is ready, so you'll have to use jQuery's document.ready event like this:

<script type='text/javascript'>//<![CDATA[
    $(document).ready(function() {
      $("select[name=cm]").change(function(){
        total();
      });

      function total() {
        alert("works?");
      }
    }
</script>
//]]></script>

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>

Or place it after the element in question, like this:

<select name="cm">
  <option value="none">none</option>
  <option value="one">the first</option>
  <option value="two">the second</option>
</select>


<script type='text/javascript'>//<![CDATA[
    $("select[name=cm]").change(function(){
        total();
    });

    function total() {
        alert("works?");
    }
</script>
//]]></script>
浅忆 2024-10-06 00:11:17

我遇到问题是因为我使用一个插件来设置选择元素的样式。
我的问题的解决方案(即 onchange 函数不起作用)在这里:
http://code.google.com/p/lnet/issues/detail ?id=41

I was having the problem because of a plugin I was using to style the select element.
The solution to my problem (being that the onchange function wouldn't work) is here:
http://code.google.com/p/lnet/issues/detail?id=41

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文