尝试在IE8中获取表单值时获取未定义

时间:2011-04-13 05:09:13

标签: javascript internet-explorer forms mootools

我有一个输入表单,嵌套在div中,定义如下:

<div class="login-input">
  <input type="text" name="userId">
</div>

我在下面添加了一个按钮,在该按钮的click事件中,我有这样的代码:

        click: function(){
            var user = document.getElementsByName(inputTitle)[0].value;
            var myRequest = new Request({
                url: '/Context/servletName',
                method: 'post',
                data: {'user': user},
                onRequest: function(){
                    $('container').setStyle('cursor', 'progress');
                },
                onSuccess: function(responseText){
                    $('container').setStyle('cursor', 'auto');
                    window.location = responseText;
                },
                onFailure: function(){
                    $('container').setStyle('cursor', 'auto');
                }
            });
            myRequest.send();
        }

这在目前为止我测试的所有浏览器(Chrome,FF,Safari)中运行良好,但在IE8中,以下代码行导致了问题:

var user = document.getElementsByName(inputTitle)[0].value;

我在IE开发工具中验证了inputTitle的值为“userId”。问题是

document.getElementsByName(inputTitle)[0];

未定义。

我也做了一些游戏。将其添加到watch会返回看起来像有效对象的内容:

// Returns valid object
document.getElementsByName(inputTitle);

// Returns null
document.getElementsByName(inputTitle).item(0);
document.getElementsByName(inputTitle).value;

一如既往,提前谢谢......

编辑:证明我不疯狂...... Values from IE dev tools debugger JS Error shown in debugger

IE version

4 个答案:

答案 0 :(得分:2)

我做了一个快速测试用例来证明代码有效 - http://jsfiddle.net/DmmcE/(在IE8上测试过)。

做一个:

var user = document.getElementsByName('userId')[0];

返回[object HTMLInputElement]

这意味着,你传递的inputTitle没有传递正确的东西。

那就是说,既然你正在使用MooTools,为什么不以MooTools的方式呢:

document.getElement('input[name=userId]').get('value');

示例:http://jsfiddle.net/UZTK4/

答案 1 :(得分:1)

你试过.innerHTML。

希望它有效!

答案 2 :(得分:0)

我建议改用idgetElementById。这应该更可靠,更快捷;支持JavaScript的任何内容都应该支持getElementById

一些谷歌搜索表明,IE和getElementsByName真的不能相处得那么好。我通常使用ID属性来引用特定元素,并且很少在原始JavaScript中使用DOM争用,所以我不能说具体是什么错误。

答案 3 :(得分:-4)

尝试使用JQuery来获取元素:

$("input[@name='inputTitle']").click(

这是一个包含更多信息的良好链接 http://jivebay.com/2007/05/30/handling-checkboxes-radio-buttons-and-select-options-in-jquery/