我使用html和jquery创建了一个表单。它连接到db,它应该在db中输入写在文本框中的值。但我有以下问题。如果特定文本框没有键入值,则应该发出警报,并阻止数据进入db。一切顺利。但同样,我想要一个文本框,如果这个文本框的值不等于其他文本框的值,它应该发出警告,并对db做同样的事情。而且存在问题。它没有得到正确的总和。我的意思是,如果我在第一个文本框中的值为15,然后在其他文本框中,值为10,然后,值为5 ..(10 + 5等于第一个文本框)它不应该发出警报,并执行它需要输入db这个数据。但它并没有。它提醒等等。如何从文本框到另一个文本框中获得此总和?感谢
function checkForm() {
if ($('#nr_articol').val().length === 0) {
alert("Nr articol trebuie sa fie introdus! ");
return false;
}
return true;
}
function checkForm2() {
if ($("#scurt_smd").val() + $("#incomplete_smd").val() + $("#bile").val() + $("#scurt_val").val() + $("#incomplete_val").val() + $("#lipsa_smd").val() + $("#invers_smd").val() + $("#componente_lipsa").val() + $("#componente_inversate_1").val() + $("#lipire_hotbar").val() + $("#componente_inversate_2").val() + $("#componente_inversate_3").val() + $("#componente_inversate_4").val() != $('#optic').val() || $('#electric').val()) {
alert("Ai introdus mai multe sau mai putine bucati decat ai verificat in total. Verifica inca odata!");
return false;
}
return true;
}
$(document).ready(function () {
$('#submitbtn').click(function () {
if (checkForm() == true) {
if (checkForm2() == true) {
var frm = $('#form');
// var data = JSON.stringify(frm.serializeArray());
var data = frm.serializeArray();
console.log(data);
$.ajax({
type: 'post',
url: 'http://localhost:3000/',
contentType: 'application/json',
crossDomain: true,
data: JSON.stringify(data),
dataType: 'json',
success: function () {
alert('sucessfully inserted');
},
error: function (err) {
console.log(err);
}
});
}
}
});
});
答案 0 :(得分:0)
所有这些数字加在一起的结果是什么?您可能需要将每个值转换为int:
parseInt($("#scurt_smd").val());
它可能正在进行字符串连接,因此1 + 2 + 3会出现为" 123"而不是6。
希望这有帮助。
答案 1 :(得分:0)
2个问题。
正如我评论的那样,你应该解析输入' sum之前的值为int。由于input.value是字符串,你现在所做的就是对它们进行汇总。
在您的A + B + C + .... != Y || Z
等式中,您可能希望总和等于Y或Z,但事实是,如果Z
可以评估为true
,那么声明永远是真的,你应该写:
var sum = A + B + C + .......;
if (sum != Y || sum != Z)
符合您的期望。
因此,您可以将checkForm2
重写为
function checkForm2() {
// Get sum.
var sum = parseInt($("#scurt_smd").val(), 10) + parseInt($("#incomplete_smd").val(), 10) + parseInt($("#bile").val(), 10) +
parseInt($("#scurt_val").val(), 10) + parseInt($("#incomplete_val").val(), 10) + parseInt($("#lipsa_smd").val(), 10) +
parseInt($("#componente_lipsa").val(), 10) + parseInt($("#lipire_hotbar").val(), 10) + parseInt($("#invers_smd").val(), 10) +
parseInt($("#componente_inversate_1").val(), 10) + parseInt($("#componente_inversate_2").val(), 10) + parseInt($("#componente_inversate_3").val(), 10) +
parseInt($("#componente_inversate_4").val(), 10);
var optic = parseInt($('#optic').val(), 10);
var electric = parseInt($('#electric').val(), 10);
// You may need to check all of them are valid numbers
// like
// if (isNaN(sum) || isNaN(optic) || isNaN(electric)) {
// do something.
// }
// If sum is not equal to any of them. or if the 3 values should all be the same, replace && with ||
if (sum !== optic && sum !== electric) {
alert("Ai introdus mai multe sau mai putine bucati decat ai verificat in total. Verifica inca odata!");
return false;
}
return true;
}