我有这个javascript:
document.write('<a HREF="javascript:return validateForm();' + thisform + '.submit();void(0);"');
我还有以下功能,引用我网站上的表格。
function validateForm()
{
var y=document.forms["myForm"]["email"].value;
if (y==null || y=="") {
alert('Please enter your email to continue.');
return false;
}
}
现在我如何在HREF中获得回报呢?在输入等于“”且validateform()返回false的情况下,它不会返回false。
答案 0 :(得分:2)
您的代码:
document.write('<a HREF="javascript:return validateForm();' +
thisform + '.submit();void(0);"');
似乎不完整。如果您使用链接,则href应链接到有用的资源。如果没有,请使用一个按钮或其他一些UI对象,清楚地表明会发生什么。
使用javascript伪协议为href属性返回false不会执行任何操作。 void语句什么都不做(这是无效点)。此外,void是一个运算符,因此不需要包含分组运算符()。
你不能使用这样的A元素有条件地提交表单,你真的应该使用表单的提交事件来有条件地允许或阻止提交。你可以这样做:
document.write(
'<a href="http://useful.com" onclick="return validateForm(' +
thisform + ');">do stuff<\/a>');
然后在 validateForm 函数中,您可以有条件地调用表单的submit方法。
如果 validateForm 返回false,则浏览器不会关注该链接。
更好的策略是将监听器放在表单上:
<form onsubmit="return validateForm(...)" ...>
如果验证失败,则返回false并取消提交。否则,提交将继续。
答案 1 :(得分:1)
为了适当地控制表单提交,您应该有这样的解决方案:
document.write('<a href="#" onclick="submitMyForm(' + thisForm + ');"');
然后有这个JS函数:
function submitMyForm(theForm) {
var y = theForm["email"].value;
if (y==null || y=="") {
alert('Please enter your email to continue.');
} else {
theForm.submit(); // will only submit the form if it's valid
}
}
答案 2 :(得分:0)
为什么有
alert("Not a valid e-mail address.");
document.location = "http://www.snarephoto.com/about/";
stopnow()
return false;
我认为你应该只有..
alert("Not a valid e-mail address.");
return false;
另外,在你的情况下,止步做什么?
答案 3 :(得分:0)
我不知道为什么你不必在href中返回一个函数,但我们不推荐这样做。
我并没有真正回答你的问题。但我无法弄清楚使用它而不是Javascript OOP真正需要的情况。
我强烈建议您将代码调整为非侵入性的方式。
体:
<p><a href="#" id="myLink">Item 1</a></p>
脚本
<script type="text/javascript">
var myFunction=function(){
//do something
alert('You clicked me!');
alert('This function is inside '+this.innerHTML+' Link');
this.style.backgroundColor='Yellow';
}
document.getElementById('myLink').onclick=myFunction;
</script>
这不直接调用函数,在虚拟机中创建内存中的引用(如C中的指针)。并且使用了最重要的NONE EVAL,并且比内联eval快得多。