Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.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 有什么原因,为什么HTML表单中禁用的字段仍然会被传输?_Javascript_Html_Css_Disabled Input - Fatal编程技术网

Javascript 有什么原因,为什么HTML表单中禁用的字段仍然会被传输?

Javascript 有什么原因,为什么HTML表单中禁用的字段仍然会被传输?,javascript,html,css,disabled-input,Javascript,Html,Css,Disabled Input,所以我有一个固定的HTML结构,我不能影响它。该结构由一个工具提供,您可以通过拖放添加选择/输入/etc字段。 例如,一个常规文本字段会得到以下HTML代码: <div id="d_001" class="field text "> <label for="f_001" id="l_001">Shortdescription</label> <input id="f_001" name="id1" value="" /&

所以我有一个固定的HTML结构,我不能影响它。该结构由一个工具提供,您可以通过拖放添加选择/输入/etc字段。

例如,一个常规文本字段会得到以下HTML代码:

<div id="d_001" class="field  text ">
    <label for="f_001" id="l_001">Shortdescription</label>
        <input id="f_001" name="id1" value=""     />
</div>
通过谷歌搜索,我发现禁用未选中的字段应该可以解决问题。但事实并非如此。它显然会禁用这些字段,因为它们是灰色的,不可编辑,但它们在发送表单时仍会被传输。

基于上面的HTML代码片段,我尝试通过

document.getElementsByTagName('input').disabled = true;
-->这将禁用所有“输入”输入字段,但仍提交没有内容的标签。即使我不确定它是否没有提交内容,或者它是否仍然提交空内容。
(是的,这将省略选择列表、文本区域等,但这是第二个问题,可以通过对所有标记类型执行相同操作来解决)

因此,我认为可能需要禁用div项中的所有元素,这意味着我还需要通过“禁用”标签

documents.getElementsByTagName('label').disabled = true;
我不太惊讶它不起作用。但由于我不能整体禁用div项,我真的不知道我缺少了什么。是否还有其他强制提交字段的内容? 我非常感谢任何能把我推向正确方向的暗示

编辑: 根据请求,我想添加禁用上述输入字段的确切循环:

// list with links to make the items clickable
      <ul id="myUL">
          <li><a id="li1" title="pants" href="javascript:void(0)" onclick="returncontent(this);showpants();">Pants</a></li>
          <li><a id="li2" title="bra" href="javascript:void(0)" onclick="returncontent(this);showbra();">Bra></li>
          <li><a id="li3" title="tshirt" href="javascript:void(0)" onclick="returncontent(this);showtshirt();">T-Shirt</a></li>
          <li><a id="li4" title="socks" href="javascript:void(0)" onclick="returncontent(this);showsocks();">Socks</a></li>
      </ul>

// a var array containing the available class attributes
var elemente = ["pants","bra","tshirt","socks"];

// defining the functions triggered by the list
function showpants(){
    howtocode(0);
}
function showbra(){
    howtocode(1);
}
function showtshirt(){
    howtocode(2);
    wosOSD();
}
function showsocks(){
    howtocode(3);

// have the function do different things depending on the selected list item
function howtocode(value){
    var arrayLength = elemente.length;
    for (var i = 0; i < arrayLength; i++) {
    var classEle = document.getElementsByClassName(elemente[i]);
    if (elemente[i] === elemente[value]){
      changeStyle(elemente[i],classEle,"block");
      setRequired(elemente[i],classEle);
    }
    else{
      changeStyle(elemente[i],classEle,"block");
      disableFields(elemente[i],classEle);
      emptyFields(elemente[i],classEle);
    }

  }
}
function disableFields(ele, classEle){
    for (var n = 0; n < classEle.length; n++) {
        var inputfields3 = classEle[n].getElementsByTagName('input');
        var textfield3 = classEle[n].getElementsByTagName('textarea');
        for (var o = 0; o < inputfields3.length; o++){
            inputfields3[o].disabled = true;
        }
        for (var p = 0; p < textfield3.length; p++){
            textfield3[p].disabled = true;
        }
    }
}

看看这个问题,


您需要设置
disabled=“disabled”
而不是设置
disabled=true

您说它提交了数据,但您如何知道它提交了什么?您确定没有查看添加了禁用字段的解析结果吗?以原始格式发送的数据是什么?您使用什么机制“提交”数据?A会很有帮助的。@Turnip好吧,那就是它得到的地方。问题是我说的是一个票证工具,它提供了创建“webtickets”的选项,这样用户就可以通过该工具中的webform创建票证。整个传动机构是一个黑匣子。我可以在浏览器中查看jQuery代码,但实际上它只是无数行未格式化的代码。但是我将尝试检索一些有用的信息。”
document.getElementsByTagName('input').disabled=true;
它禁用所有“input”输入字段”-不,它没有
getElementsByTagName
返回一个节点列表,您只需将该节点列表的
disabled
属性设置为true,这不会产生任何效果。您需要循环此列表中包含的元素,并分别为每个元素设置disabled属性。@Ashley此时,我觉得有义务提及几周前刚刚开始的JS旅程。恐怕我不知道如何才能找到你问题的答案。你说的“原始格式”是什么意思?我想你把html和js的设置搞混了。如果您查看未被接受的答案(分数较高),您将看到设置为
true
via js是正确的。然而,海报上说,即使输入明显被禁用,字段仍在发送,这是不正确的行为。
documents.getElementsByTagName('label').disabled = true;
// list with links to make the items clickable
      <ul id="myUL">
          <li><a id="li1" title="pants" href="javascript:void(0)" onclick="returncontent(this);showpants();">Pants</a></li>
          <li><a id="li2" title="bra" href="javascript:void(0)" onclick="returncontent(this);showbra();">Bra></li>
          <li><a id="li3" title="tshirt" href="javascript:void(0)" onclick="returncontent(this);showtshirt();">T-Shirt</a></li>
          <li><a id="li4" title="socks" href="javascript:void(0)" onclick="returncontent(this);showsocks();">Socks</a></li>
      </ul>

// a var array containing the available class attributes
var elemente = ["pants","bra","tshirt","socks"];

// defining the functions triggered by the list
function showpants(){
    howtocode(0);
}
function showbra(){
    howtocode(1);
}
function showtshirt(){
    howtocode(2);
    wosOSD();
}
function showsocks(){
    howtocode(3);

// have the function do different things depending on the selected list item
function howtocode(value){
    var arrayLength = elemente.length;
    for (var i = 0; i < arrayLength; i++) {
    var classEle = document.getElementsByClassName(elemente[i]);
    if (elemente[i] === elemente[value]){
      changeStyle(elemente[i],classEle,"block");
      setRequired(elemente[i],classEle);
    }
    else{
      changeStyle(elemente[i],classEle,"block");
      disableFields(elemente[i],classEle);
      emptyFields(elemente[i],classEle);
    }

  }
}
function disableFields(ele, classEle){
    for (var n = 0; n < classEle.length; n++) {
        var inputfields3 = classEle[n].getElementsByTagName('input');
        var textfield3 = classEle[n].getElementsByTagName('textarea');
        for (var o = 0; o < inputfields3.length; o++){
            inputfields3[o].disabled = true;
        }
        for (var p = 0; p < textfield3.length; p++){
            textfield3[p].disabled = true;
        }
    }
}
    var data = elements.inject({ }, function(result, element) {
      if (!element.disabled && element.name) {
        key = element.name; value = $(element).getValue();
        if (value != null && (element.type != 'submit' || (!submitted &&
            submit !== false && (!submit || key == submit) && (submitted = true)))) {
          if (key in result) {
            // a key is already present; construct an array of values
            if (!Object.isArray(result[key])) result[key] = [result[key]];
            result[key].push(value);
          }
          else result[key] = value;
        }
      }
      return result;
    });