gpt4 book ai didi

javascript - insertAdjacentHTML 有问题吗?

转载 作者:行者123 更新时间:2023-11-30 18:20:28 26 4
gpt4 key购买 nike

我有两个功能。第一个是检查所有输入元素以确保它们被正确填充的那个。一切正常,但随着第二个函数开始运行(第二个函数“newInput()”添加输入),第一个函数不能再应用了。

调试器说 atpositionSec = emailSec.indexOf("@") 中的 emailSec 未定义。

有人知道解决方案吗??

标记在这里:

<--!The HTML-->
<form method="post" action="" id="cms" name="cms" onSubmit="return error()">
<table>
<tbody id="myInput">
<tr>
<td>
<label>Role:<span> *</span></label>
<input type="text" name="role" id="role" value="" class="required span3" role="input" aria-required="true" />
</td>
<td>
<label>Email:<span> *</span></label>
<input type="email" name="emailSec" id="emailSec" value="" class="required span3" role="input" aria-required="true" />
</td>
<td>
<button style="height: 20px;" title='Add' onclick='newInput()'></button>
</td>
</tr>
</tbody>
<input type="hidden" name="count" id="count" vale=""/>
</table>
<input type="submit" value="Save Changes" name="submit" id="submitButton" title="Click here!" />
</form>

第一个函数:

function error()
{
var emailSec = document.forms['cms']['emailSec'].value,
role = document.forms['cms']['role'].value,
atpositionSec = emailSec.indexOf("@"),
dotpositionSec = emailSec.lastIndexOf(".");


if( topicSec == '' || topicSec == null)
{
alert ("Write your Topic!");
return false;
}
else if(role == '' || role == null)
{
alert ("Enter the Role of the email owner!");
return false;
}
else if(emailSec == '' || emailSec == null || atpositionSec < 1 || dotpositionSec < atpositionSec+2 || dotpositionSec+2 >= emailSec.length)
{
alert ("Enter a valid Email!");
return false;
}
else return true;



}

第二个函数:

//The Javascript - Adding Inputs 
var i = 1,
count;


function newInput()
{
document.getElementById("myInput").insertAdjacentHTML( 'beforeEnd', "<tr><td><input type='text' name='role" + i + "' id='role' value='' class='required span3' role='input' aria-required='true' /></td><td><input type='email' name='emailSec" + i + "' id='emailSec' value='' class='required span3' role='input' aria-required='true' /></td><td><button style='height: 20px;' title='Remove' onclick='del(this)'></button></td></tr>");


count = i;
document.forms["cms"]["count"].value = count;
i++;
}

// Removing Inputs
function del(field)
{
--count;
--i;
document.forms["cms"]["count"].value = count;
field.parentNode.parentNode.outerHTML = "";
}

最佳答案

问题是在第一次添加之后,document.forms['cms']['emailSec']成为一个数组,其中包含名称为 emailSec 的所有元素,因此您需要使用 document.forms['cms']['emailSec'][i] 单独验证所有这些.

为了省去一些麻烦,您可以使用 pattern attribute html5 中的输入元素自动执行此操作。此外,您可以使用类似 <input type="email" required /> 的内容我认为这几乎可以为您完成所有工作。

关于javascript - insertAdjacentHTML 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com