我试图找出一种方法来改变ajax的最大长度,称为输入字段,方法是拉出该值以设置字段的标签并更新默认值。字段标签都遵循相同的格式 - id,class,type和maxlength。要设置的新maxlength值始终存在于id ... max_X_characters ...
中`<input id="ecwid-productoption-16958710-Line_5_:0028max_4_characters:0029" class="gwt-
TextBox ecwid-productBrowser-details-optionTextField ecwid-productoption-
Line_5_:0028max_4_characters:0029" type="text" maxlength="200"></input>`
所以在这个例子中我需要将maxlength设置为4。
另一个问题是有多个输入字段,通常具有不同的maxlength值。有关示例,请参阅here。
我正在考虑设置一个脚本,以便在字段加载后拉出值,但是我不介意承认它,这个是我的头脑 - 希望你们其中一个聪明的家伙可以解决这个问题!< / p>
更新:感谢您提出的建议,我已经尝试了各种组合,但无法让它们发挥作用。
以下是Ecwid技术团队建议的代码,它将页面上的所有输入字段设置为一个maxlength(在这种情况下为6)
`Ecwid.OnPageLoaded.add(function(page){if (page.type == "PRODUCT") {
$("input.ecwid-productBrowser-details-optionTextField").attr('maxlength','6');
};
})`
但是,正如我所说,某些产品的输入字段具有不同的最大长度。
我已尝试根据您的建议使用函数替换上面的'6',以从输入ID获取maxlength,但无法使其工作。
还有什么想法?
由于
更新
破解(差不多),这是工作代码
`Ecwid.OnPageLoaded.add(function(page){
var regex = new RegExp("max_(\\d+)_characters");
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var inp = inputs[i];
if (regex.test(inp.id)) {
var newLimit = inp.id.match(regex)[1];
inp.maxLength = newLimit;
}
}
});`
非常感谢您的帮助,它在产品页面上就像一个梦想,但还有另一个领域没有。客户可以通过购物篮中的弹出窗口编辑输入文本。
字段的代码类似:
`<input id="ecwid-productoption-16958710-Line_5_:0028max_4_characters:0029"
class="gwt-TextBox ecwid-productBrowser-details-optionTextField ecwid-productoption-
Line_5_:0028max_4_characters:0029" type="text" maxlength="200"></input>`
建议非常欢迎
克里斯
更新
很多,很多,非常感谢ExpertSystem(你天才!) - 我想我们已经得到了它。 (在IE10上测试,firefox 21,chrome 27)。
下面的代码适用于一起使用Yola和Ecwid的人,但我想原始代码可能适用于使用其他网站建设者的人。它通过检查输入字段标题中的数字(在这种情况下是'max'和'characters'之间的值)并将其替换为字段的maxLength值,限制用户可以在Ecwid中输入字符的数量。 。它限制了产品浏览器,html小部件和购物车弹出窗口中的字段。
这是:
转到Yola的自定义网站跟踪代码部分。在“页脚代码”列(实际位于“正文”的底部)中,放置此代码:
<script>
Ecwid.OnPageLoaded.add(function(page){
var regex = new RegExp("max_(\\d+)_characters");
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var inp = inputs[i];
if (regex.test(inp.id)) {
var newLimit = inp.id.match(regex)[1];
inp.maxLength = newLimit;
}
}
});
</script>
<script>
var regex = new RegExp("max_(\\d+)_characters");
function fixMaxLength(container) {
var inputs = container.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var inp = inputs[i];
if (regex.test(inp.id)) {
var newLimit = inp.id.match(regex)[1];
inp.maxLength = newLimit;
}
}
};
</script>
并将其放入“标题代码”列:
<script>
document.addEventListener("DOMNodeInserted", function() {
var popups = document.getElementsByClassName("popupContent");
for (var i = 0; i < popups.length; i++) {
fixMaxLength(popups[i]);
}
});
</script>
就是这样!你很高兴。
答案 0 :(得分:0)
你的id属性上的正则表达式怎么样?如下:
jQuery('input').each(function() {
var idVal = jQuery(this).attr('id');
var regex = /max_(\d+)_characters/g;
var result = regex.exec(idVal);
var length = result[1];
});
这是所有输入的循环。一旦运行,长度变量将具有适当的长度,用于下一步。
答案 1 :(得分:0)
“ajax称为输入字段”的含义并不完全清楚,但假设输入字段是在一个AJAX调用的成功回调中创建并添加到DOM中的,您可以将以下代码放入页面<head>
:
var regex = new RegExp("max_(\\d+)_characters");
function fixMaxLength(container) {
var inputs = container.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var inp = inputs[i];
if (regex.test(inp.id)) {
var newLimit = inp.id.match(regex)[1];
inp.maxLength = newLimit;
}
}
}
然后,在AJAX调用的“onSuccess”回调结束时,附加:
fixMaxLength(document);
<强>更新强>:
根据您在下面的评论,如果您需要将fixMaxLength()
应用于动态添加到您的DOM的类“popupContent”,一种简单的方法(虽然不是最有效的)将添加一个用于DOM修改的侦听器事件(例如<head>
中的某个地方):
document.addEventListener("DOMNodeInserted", function() {
var popups = document.getElementsByClassName("popupContent");
for (var i = 0; i < popups.length; i++) {
fixMaxLength(popups[i]);
}
});
(注意:我只在最新版本的Chrome和Firefox上进行了测试,所以我不确定哪些其他/旧浏览器可以正常使用。)
(注2:GGGS,也在IE10上对它进行了测试(并发现它正常工作)。)