【问题标题】:How to change maxlength attributes for all classes of "field answer"如何更改所有“字段答案”类别的 maxlength 属性
【发布时间】:2021-04-30 11:12:32
【问题描述】:

我有一个名为“field answer”的类,它的属性“maxlength”为 250。我想在每次出现此 maxlength 属性时将其更改为 9999。

<div class="field answer">
   <textarea name="ctl00$Main$ctrl_16161" rows="2" cols="20" id="ctl00_Main_ctrl_16161" class="long" 
    onkeyup="return cw.Utilities.trimLength(this)" maxlength="250" style="resize: none; height: 61px; 
    overflow-y: hidden;"></textarea>
</div>

在这方面我是个菜鸟,所以请理解。我已经尝试了以下但没有运气。

var fieldAnswer = document.getElementsByClassName("field answer");
if (fieldAnswer.namedItem = "maxlength") {
  fieldAnswer.maxlength = 9999;

似乎唯一可行的是当我像下面这样单独调用每个标签时:

$(function() {
$("#ctl00_Main_ctrl_16161").attr("maxlength",9999);});

【问题讨论】:

  • 我有一个名为“field answer”的类 => 不,你有两个类,fieldanswer。 ...它的属性“maxlength”为 250 => 不,那是你的 textarea 的属性。我需要在从 XML 文件调用的单独 js 文件中引用它=> 你不能从 XML 文件调用 JS 文件。
  • $(".field.answer").find("textarea").attr("maxlength", 9999)
  • 请注意,您已经使用了getElementsByClassName - getElement__s__ByClassName - 您将返回一个 HTMLCollection(类似于数组)。尝试调试你的变量,看看你实际拥有什么。
  • @terrymorse 您的编辑(OP 已经回滚了一次!)代表 OP 做出他们尚未确认的假设 - 实际上他们通过回滚来否认。如果 OP 真的认为他们有一个属性为 maxlength 的 div,那么更改他们在问题中的措辞将无济于事。

标签: javascript html jquery xml class


【解决方案1】:

使用原生 JavaScript,这将找到包含在任何 &lt;div class="field answer"&gt; 中的所有 textarea 元素,然后将每个 maxlength 更改为 9999:

// get all textarea elements within <div class="field answer">
const textEls = document.querySelectorAll('div.field.answer textarea');

// update maxlengths
textEls.forEach(el => {
  el.maxLength = 9999;
});

console.log('textEls:',[...textEls]);
<div class="field answer">
  <textarea name="ctl00$Main$ctrl_16161" rows="2" cols="20"
    id="ctl00_Main_ctrl_16161" class="long"
    onkeyup="return cw.Utilities.trimLength(this)"
    maxlength="250"
    style="resize: none; height: 61px; overflow-y: hidden;"
  ></textarea>

  <textarea name="duplicate" rows="2" cols="20"
    id="ctl00_Main_ctrl_16161" class="long"
    onkeyup="return cw.Utilities.trimLength(this)"
    maxlength="250"
    style="resize: none; height: 61px; overflow-y: hidden;"
  ></textarea>

</div>

【讨论】:

    【解决方案2】:

    maxlength 属性位于 textarea 上,而不是 div.field 元素上。另外请注意,您的 jQuery 正在使用由 ASP.Net 生成的选择器,并且可能会更改。因此,您可以通过选择 textarea 元素作为父 div.field 的子元素并一次更新所有元素来实现您最需要的:

    jQuery($ => {
      $('div.field.answer textarea').prop('maxlength', 9999);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多