1

我有两个选择菜单请求

  1. 居民的建筑号码和
  2. 他们的公寓号码

如果访问者选择任一菜单的最后一项(两者都具有相同的value, textclass),我想调用一个函数来向他们隐藏表单并显示一条消息。

该功能运行良好,因为它还通过一个非居民可能会点击的独立链接调用:(不要住在这里?)

如果以及何时选择了最后一个选项,我无法使select'事件调用该函数。change()

这是我的选择代码的简短版本:

<form id="document-request" name="document-request" class="clearfix">
    <label>Your Full Name:
        <input type="text" name="fullname" value="" class="span12"
        required>
    </label>
    <label>Your Email:
        <input type="text" name="email" value="" class="span12 email"
        required>
    </label>
    <label for="building">Your Bldg &amp; Apt#:</label>
    <select name="building" class="span2" required>
        <optgroup label="Building">
            <option value="" name="building">--</option>
            <option value="1" name="building">1</option>
            <option value="2" name="building">2</option>
            <option value="3" name="building">3</option>
            <option value="4" name="building">4</option>
            <option value="5" name="building">5</option>
            <option value="6" name="building">6</option>
            <option value="7" name="building">7</option>
        </optgroup>
        <option value="nonresident" name="building" class="dontlivehere">I Don’t Live Here</option>
    </select>

这是jQuery:

$('#document-request select').change(function () {
    var theValue = $(this).child('option:selected').text();
    if ((theValue).contains('Live Here')) {
        residenceAlert();
    }
});

我还尝试通过作用于 和 来实现这value一点class
我真的不需要那dontlivehere门课,它只是我试图找到解决方案的一部分。

可以在此处找到正在进行的示例页面

4

5 回答 5

4

.child()不是有效的 jQuery 函数,请尝试.find()

var theValue = $(this).find('option:selected').text();

我可能会使用这样的东西:

if ($(this).find('option:selected').val() === 'nonresident') {
    residenceAlert();
}
于 2013-03-13T22:35:15.307 回答
1

浏览器调试器控制台将显示以下错误:

Uncaught TypeError: Object [object Object] has no method 'child' 

child()不是 jQuery 方法。

例如,将其更改为find()

替换为 后child()find()您可能会收到下一个错误,具体取决于您的浏览器:

Uncaught TypeError: Object has no method 'contains' 

string.contains()仅受 FireFox 支持,使用indexOf()可能会更好,除非您当然不需要支持任何其他浏览器。

您的完整代码可能类似于:

$('select').change(function () {
    var theValue = $(this).find('option:selected').text();
    if (theValue.indexOf('Live Here')) {
        residenceAlert();
    }
});

演示- 使用.find()indexOf()


于 2013-03-13T22:41:19.190 回答
0

这对我有用:

HTML

<select id="building" name="building" class="span2" required>
    <optgroup label="Building">
    <option value="" name="building">--</option>
    <option value="1" name="building">1</option>
    <option value="2" name="building">2</option>
    <option value="3" name="building">3</option>
    <option value="4" name="building">4</option>
    <option value="5" name="building">5</option>
    <option value="6" name="building">6</option>
    <option value="7" name="building">7</option>
    </optgroup>  
    <option value="nonresident" name="building" class="dontlivehere">I Don’t Live Here</option>
  </select>

jQuery:

$(document).ready(function(){
$('select#building').change(function() {
      var theValue = $('option:selected').text();
        console.log(theValue);
      if ((theValue).contains('Live Here')) {
      alert("it works!");
   }
});
});
于 2013-03-13T22:38:03.290 回答
0

2个问题:

1)子方法。

2) 包含方法。

var theValue = $(this).find('option:selected').text();
if( theValue.indexOf('Dont Live Here') >= 0){
    residenceAlert()
}
于 2013-03-13T22:40:14.090 回答
0

这行不应该:

if ((theValue).contains('Live Here')) {

说:

if ((theValue).contains("I Don't Live Here")) {
于 2013-03-13T22:33:47.247 回答