Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript生成表单是否需要字段?_Javascript_Html_Forms_Validation - Fatal编程技术网

使用javascript生成表单是否需要字段?

使用javascript生成表单是否需要字段?,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我有一个表单,它使用javascript文件items.js添加新项目。因此,每次使用form.php并单击“添加项目”按钮时,就会显示新行字段以添加详细信息 例如,下面的一些代码用于添加字段项名称 newCell = newRow.insertCell(3); newCell.innerHTML = '<input class="item_text_area item_name" type="text" name="0_item_' + new_item + '" id="0_item_

我有一个表单,它使用javascript文件
items.js
添加新项目。因此,每次使用
form.php
并单击“添加项目”按钮时,就会显示新行字段以添加详细信息

例如,下面的一些代码用于添加字段项名称

newCell = newRow.insertCell(3);
newCell.innerHTML = '<input class="item_text_area item_name" type="text" name="0_item_' + new_item + '" id="0_item_' + new_items + '" size="20" maxlength="250" />';
newCell=newRow.insertCell(3);
newCell.innerHTML='';
如何编辑此
.js
文件以使项目名称字段成为必填字段


如果您有任何帮助,我们将不胜感激。

您可以使用jquery进行此操作。将类(在本例中为“requiredAttr”)添加到必填字段,然后在表单提交时进行验证

<form onsubmit="return validate();">
  First Name*: <input class="requiredAttr" type="text" /><br/>
  Last Name: <input type="text" /><br/>
  <input type="submit" />
</form>

function validate(){
$(".requiredAttr").each(function(){
    if($(this).val().length < 1){
        alert("please fill in all the required fields.");
        $(this).focus();
        return false;
    }
    else{
        return true;
    }
});
return false;
}

名字*:
姓氏:
函数验证(){ $(“.requiredAttr”)。每个(函数(){ if($(this).val().length<1){ 警告(“请填写所有必填字段”); $(this.focus(); 返回false; } 否则{ 返回true; } }); 返回false; }
这是一把小提琴。它还将重点放在验证警报后的第一个未填充字段上:


每辆吉普车:由于您无法确定用户提交了多少项,因此我会选择一种方法,其中所有新项都有唯一的类,例如
dynamicaddedpitems

正如Jeeven已经说过的,如果表单标记返回
false
,您可以将以下内容添加到表单标记中,以防止其提交

<form onsubmit="return validate();"></form>

使用javascript:

function validate(){
  var elems = document.getElementsByClassName( 'dynamicAddedItems' );
  var allgood = true;

  //Loop through all elements with this class
  for( var i = 0; i < elems.length; i++ ) {
    if( !elems[i].value || !elems[i].value.length ) {
      elems[i].className += " error";
      allgood = false;
    } else {
      elems[i].className = "item_text_area item_name dynamicAddedItems";
    }
  }

  //If any element did not meet the requirements, prevent it from being submitted and display an alert
  if( !allgood ) {
    alert( "Please fill in all the required fields." );
    return false;
  }

  //Otherwise submit the form
  return true;
}
函数验证(){
var elems=document.getElementsByClassName('dynamicAddedItems');
var allgood=true;
//使用该类遍历所有元素
对于(变量i=0;i

如果字段为空,此脚本将添加错误类,并阻止提交表单。如何显示具有此类字段取决于您。

您是想添加某种警报,还是只是想向用户指出它是必填字段?对于表单的其余部分,如果没有使用items.js,我可以添加class=“blah required”它将停止提交表单,同时让用户知道特定字段是必需的。我希望表单的.js部分也这样做。-1如果用户没有声明他们使用jQuery,则需要使用“原始”javascript的答案。如果你把所有相关的代码也放在你的答案中,那就太好了,因为JSFIDLE要到永远才可用。@Sumurai8首先OP没有提到他没有使用jquery。第二,如果有更好/更容易/更快的方法做某事,指出它总是一件好事。这就是为什么我们都在这里,提供帮助。关于JSFIDLE,最好使用一个工作示例。这不应该永远在这里。如果你认为JSFIDLE永远不会出现,那么你为什么会这样认为呢?请将鼠标悬停在javascript标记上。@Sumurai8 javascript文件,一个.js文件。伙计,我想知道jquery文件使用什么扩展名。它是否可以一直使用到永远都没有关系。如果没有jsfiddle,您的答案对于其他有相同问题的人来说毫无价值。很有可能,jsfiddle最终会清理所有未使用的jsfiddle,这意味着您的答案将大部分消失。JSFIDLE应该是一个添加项。@axon111请使用“注释”部分提出改进建议(只要您有权添加注释)。您添加的break语句将防止所有错误的字段高亮显示,这不是代码应该使用的方式。