MooTools - 如何使用getSelected()

时间:2010-07-27 03:01:41

标签: html html-select mootools html-form

我正在尝试学习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]

6 个答案:

答案 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') );