1
4

4 回答 4

2

你的代码:

document.write('<a HREF="javascript:return validateForm();' +
  thisform + '.submit();void(0);"');

似乎不完整。如果您使用的是链接,则 href 应链接到有用的资源。如果没有,请使用按钮或其他一些 UI 对象来清楚地指示将发生什么。

使用 javascript 伪协议为 href 属性返回 false 不会执行任何操作。void 语句根本不做任何事情(这就是 void 的意义所在)。此外,void 是一个运算符,因此无需包含分组运算符 ()。

您不能使用这样的 A 元素来有条件地提交表单,您确实应该使用表单的提交事件来有条件地允许或阻止提交。你可以做:

document.write(
  '<a href="http://useful.com" onclick="return validateForm(' +
      thisform + ');">do stuff<\/a>');

然后在validateForm函数中,您可以有条件地调用表单的提交方法。

如果validateForm返回 false,浏览器将不会跟随链接。

一个更好的策略是将监听器放在表单上:

<form onsubmit="return validateForm(...)" ...>

如果验证失败,则返回 false 并取消提交。否则,提交将继续。

于 2011-09-14T03:09:23.203 回答
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
    }
}
于 2011-09-14T03:16:01.443 回答
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;

另外, stopnow 在您的情况下会做什么?

于 2011-09-14T01:59:53.437 回答
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,并且比 inline eval 快得多。

于 2011-09-14T02:56:14.550 回答