为什么这个表单不会验证?

时间:2009-02-17 11:48:48

标签: javascript html validation

未调用“onsubmit”语句:

<form action="index.php" method="post" onsubmit="return validateSearchKeyword()">
        <input class="text_search" id="text_search" name="text_search" type="text" value="search" onfocus="if (this.value=='search') this.value = ''" onBlur="if (this.value=='') this.value = 'search'"  />
    </form> 

这是我的验证功能:

function validateSearchKeyword()
{ alert ('sad');//for testing purposes - this alert is not showed
if (document.getElementById('text_search').value==""){creatediv('divWarnSearch','You must supply a value', '120px', '250px');return false;}
}

函数 creatediv 与其他表单一起使用效果很好,所以问题不是那个。

有什么想法吗? 感谢

4 个答案:

答案 0 :(得分:2)

您缺少提交按钮,这可能会导致用户无法在某些浏览器中提交表单。

此外,如果您可以发布验证功能会很有帮助,因此我们可以检查是否存在问题,例如它会返回一个布尔值吗?

如果您使用以下内容,您会得到什么结果:

<form ... onsubmit="alert('Foo'); return true">

答案 1 :(得分:0)

检查以确保您正在调用的函数实际存在,然后我将通过该函数检查问题。 Firebug可能对你有用,或者你可以在被调用函数的顶部粘贴以下内容(以确保它已经走得那么远):

alert('here');

答案 2 :(得分:0)

你的问题是:

onBlur="if (this.value=='') this.value = 'search'"

当您提交时,您失去了对文本框的关注并启动了事件:尝试放置

alert(document.getElementById('text_search').value);

你会得到“搜索”而不是空字符串......

答案 3 :(得分:-1)

试过了onsubmit="javascript: validateSearchKeyword();"? AFAIK,它已经返回,无需指定。

您也可以尝试删除()。

此外,提交按钮as Mr Potato Head表示,如果您没有删除它以使代码简洁。

编辑:这是一篇经过深思熟虑的帖子。这是不该做的一个很好的例子。如果您在代码中发现了任何这些建议,请重构!