我想通過拉取值來設置字段標籤並更新默認值來找出一種方法來改變稱爲輸入字段的ajax的最大長度。字段標籤都遵循相同的格式 - id,class,type和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>`
因此,在這個例子中,我需要將最大長度設置爲4
的另一個問題是,有多個輸入字段,通常具有不同的最大長度值。一個例子見here。
我正在考慮設置一個腳本,以便在字段加載完成後提取值,但我不介意承認它,這個在我的頭上 - 希望你們中的一個聰明的人能找到它!
更新:感謝您的建議,我嘗試了兩種方法,但是不能讓它們工作。
這裏是由Ecwid的技術團隊建議的代碼,將頁面上的所有輸入字段一個最大長度(6在這種情況下)
`Ecwid.OnPageLoaded.add(function(page){if (page.type == "PRODUCT") {
$("input.ecwid-productBrowser-details-optionTextField").attr('maxlength','6');
};
})`
然而,正如我說有有一些不同maxlengths輸入字段產品。
我已經嘗試用函數替換上面的'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>`
建議非常歡迎
克里斯
UPDATE:
很多很多,非常感謝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>
這就是它!你很好走。
如果在ID和className字段中使用更多字符,它將自行消除痛苦!好東西你至少正確地關閉了輸入! – adeneo
如果您可以將值X動態插入到id/class名稱中,爲什麼不能將該值插入到源中的maxlength屬性中? –
我可能應該提到,我使用的是ecwid,所以沒有任何控制maxlength源(我試過要求他們在後端添加maxlength選擇框,但它是不行)。我可以使用JavaScript API來獲取或更改某些元素。 – GGGS