我是一个jquery初学者,正在处理输入,如图所示,用户必须遵循正确的语法,如“name = value”。如果输入的数据格式正确或“=”的右侧或左侧有任何空格,我想进行验证。为此,我可以使用trim()。我正在努力的部分是如何将用户输入分为3个部分“name”,“=”和“value”,因为稍后,我想按名称和值对列表进行排序。请有人指出我正确的方向。
我的代码
$("#add-pair").on("submit", function(e) {
e.preventDefault();
const addItem = $('#add-pair > input[type="text"]').val();
if (!addItem || addItem === null) {
$("#add-pair").append(
'<div class="error">Cannot post empty string. Please add Name=Value!</div>'
);
setTimeout(function() {
$(".error").fadeOut();
}, 4000);
} else {
$li = $("<li>");
$textSpan = $("<span>")
.addClass("name")
.text(addItem);
$deleteSpan = $("<span>")
.addClass("btn delete")
.text("Delete");
$listItem = $li.append($textSpan).append($deleteSpan);
$("#list")
.hide()
.prepend($listItem)
.fadeIn(500);
}
});
<form id="add-pair">
<input type="text" name="addPair" id="input" placeholder="Name=Value..." />
<button class="btn">Add</button>
</form>
答案 0 :(得分:0)
尝试使用split
在=
之前和=
之后的字符串中拆分:
const inputStr1 = ' name = value ';
const inputStr2 = ' name value ';
function validate(str) {
if (!str.includes('=')) {
console.log('no = found, returning');
return;
}
const [cleanedName, cleanedValue] = str.split('=').map(uncleanStr => uncleanStr.trim());
console.log('returning values "' + cleanedName + '" "' + cleanedValue + '"');
return [cleanedName, cleanedValue];
}
const results1 = validate(inputStr1);
const results2 = validate(inputStr2);