返回document.write中的Javascript函数('<a href="">&#39;)</a>

时间:2011-09-14 01:55:22

标签: javascript document.write

我有这个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。

4 个答案:

答案 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快得多。