我有两个选择菜单
如果访问者选择了任一菜单的最后一项(两者都具有相同的value,
text
和class
),我想调用一个隐藏表单的函数并显示一个消息。
该功能正常运行,因为它也是通过非居民可能点击的独立链接调用的:(不住在这里?)
如果选择了最后一个选项,select
的{{1}}事件会调用该函数,我无法工作。
以下是我的选择代码的简要版本:
change()
这是jQuery:
<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 & 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>
我还试图通过$('#document-request select').change(function () {
var theValue = $(this).child('option:selected').text();
if ((theValue).contains('Live Here')) {
residenceAlert();
}
});
以及value
来实现这一目标。
我真的不需要class
课程,这只是我尝试寻找解决方案的一部分。
可以找到正在进行的示例页面here
答案 0 :(得分:4)
.child()
不是有效的jQuery函数,请尝试.find()
var theValue = $(this).find('option:selected').text();
我可能只是使用这样的东西:
if ($(this).find('option:selected').val() === 'nonresident') {
residenceAlert();
}
答案 1 :(得分: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();
}
});
DEMO - 使用.find()
和indexOf()
答案 2 :(得分:0)
不应该这一行:
if ((theValue).contains('Live Here')) {
说:
if ((theValue).contains("I Don't Live Here")) {
答案 3 :(得分: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!");
}
});
});
答案 4 :(得分:0)
2个问题:
1)儿童方法。
2)包含方法。
var theValue = $(this).find('option:selected').text();
if( theValue.indexOf('Dont Live Here') >= 0){
residenceAlert()
}