我正在尝试学习MooTools并且我是一个完整的javascript noobie所以请温柔地对待我。
我要做的是在选择特定选项时更改已禁用输入字段的状态(类型为文本)。 html看起来有点像tis:
<select class="wide" id="selectBox" name="option>
<optgroup label="Common">
<option value="one">One<option>
<option value="two">Two<option>
<option value="three">Three<option>
</optgroup>
<optgroup label="Less Common">
<option value="other">Other<option>
</optgroup>
</select>
<input id="other" type="text" disabled="disabled" />
这就是我正在HOPING会给我在if语句中检查的值,然后将输入禁用更改为启用:
window.addEvent('domready', function(){
$$('#selectBox').addEvent('change',function(){
var selection = $$('#selectBox').getSelected();
alert(selection);
});
});
当我们运行代码时(即我在选项框中选择了另一个值),我得到的是[object HTMLOptionElement]
。
此方法的mootools文档是SPARSE,只说:
元素方法:getSelected
返回a的选定选项 选择元素。
Returns:
* (array) An array of the selected elements.
实施例: HTML
<select id="country-select" name="country">
<option value="US">United States</option
<option value ="IT">Italy</option>
</select>
的JavaScript
$('country-select').getSelected(); //Returns whatever the user selected.
注意:
此方法返回一个数组,而不管select元素的多个属性如何。如果select是单个,它将返回一个只包含一个项目的数组。
完全混乱!
有人请告诉我我错过了什么。我也试过了:
var selection = $$('#selectBox').getSelected().value; //and
var selection = $$('#selectBox').getSelected('value'); //and
//a WHOLE bunch of other wild ideas including
var selection = $$('#selectBox').getSelected();
alert(selection[0]);
没有什么是正确的。在某些情况下,我会获得undefined
,而在其他情况下,我会得到相同的[object HTMLOptionElement]
。
答案 0 :(得分:15)
这么多错了,不知道从哪里开始。
$$()
是一个集合运算符(document.getElements()
的别名,它根据选择器返回多个数字) - 不适合用于id。
您想要document.id("idhere")
或$("idhere")
for mootools 1.2 +
document.id('selectBox').addEvent('change',function() {
alert(this.get("value")); // get value
alert(this.getSelected().get("value")); // gets the option that's selected and then it's value
});
确保检查您的标记 - 您没有关闭选项,您缺少“from name =”选项&gt;同样。
getSelected作为方法存在,因为某些选择使用多个选择,因此执行selectEl.get(“value”)将不会报告任何有意义的内容。任何其他情况,.get(“value”)都没问题。
检查它是否正常工作: http://www.jsfiddle.net/dimitar/SmShF/
玩得开心并阅读手册:)
答案 1 :(得分:4)
迟到的回复但是我遇到了同样的问题并在Mootools以这种(简单)的方式解决了这个问题:
$('selectBox').getSelected().get('text')
答案 2 :(得分:2)
太复杂了!
你不需要做这么复杂的事情,这就足够了:
var selection = document.getElementById("selectBox").value;
alert(selection);
那应该可以获得所选文字。
但如果你想使用mootools,我猜这会起作用(我不打算试试)
var selection = $('selectBox').getSelected();
alert(selection[0].value);
这也存在一些问题:
<select class="wide" id="selectBox" name="option>
您不需要name
属性,因为它与id
基本相同。如果你同时拥有两者,那么它们应该是相同的。即id="selectBox"
和name="selectBox
应关闭name
标记。
同样在您的示例中,您有很多<option>...<option>
应该是<option>...</option>
答案 3 :(得分:0)
您需要做的就是:
$('country-select').getSelected().get('value')[0];
答案 4 :(得分:0)
快速,骇客的方式:
alert($('selectBox').value)
详细,推荐方式:
var selectBox = document.id('selectBox');
alert(selectBox.get('value'));
答案 5 :(得分:0)
.getSelected()返回一个数组。请参阅文档:http://mootools.net/docs/core/Element/Element#Element:getSelected。 我的代码是:
var $obj=$$('#id').getSelected()[0];
alert( $obj.get('text') );
alert( $obj.get('value') );