Я пытаюсь это сделать: если $ ('# name') пусто () alert ("Введите допустимый ввод") Полагаю, я делаю что-то подобное?
if $('#name') == empty() {
alert("enter valid input");
}
Я хочу использовать функцию, чтобы я мог привыкнуть к многократному использованию одной и той же функции. Я понимаю, что могу просто ввести его индивидуально, не используя функцию переключения. В статьях вроде этой: Проверьте, пусты ли входы, используя jQuery, похоже, не использует метод переключения или функции.
function empty(e){
switch (e) {
case "":
case 0:
case "0":
case null:
case false:
case typeof this == "undefined":
return true
default: return false
}
}
</script>
$(document).on('click','#add_btn',function (){
if $('#name')
$.ajax({
type:'POST',
url:'add.php',
//dataType: "json",
data: {
"name": $('#name').val(),
"coffee": $('#coffee').val(),
},
success: function(data){
alert(data);
if (data=='ADD_OK') {
location.reload();
} else {
alert('something wrong');
}
}
})
});
</script>
$(selector)
вернет объект jQuery, который не будет передавать ==
или ===
что-либо, кроме самого себя.
Ваш код похож на мое следующее предположение. Мне это просто "показалось" забавным, потому что у empty нет () после ... empty (). Спасибо.
case typeof this == undefined
не имеет смысла. Исследуется ценность e
. Это значение case будет либо true
, либо false
.
@RoryMcCrossan val () может вернуть значение undefined, если элемент не найден, не так ли?
jQuery('#tod').val()
в моей консоли на сайте возвращает undefined
@Taplar да, ты прав. Моя ошибка. Нужно выяснить, когда это изменилось, или я схожу с ума
.val () возвращает неопределенные, а также пустые строки
Вы могли бы это сделать, [undefined, ''].indexOf($(selector).val())
. Или просто !
это
Ага. некоторые думают, что переключатель должен быть === "undefined". (три ===) Была дискуссия из другой статьи, которую я прочитал, с неоднозначными мнениями.
Хорошо, позволь мне помочь тебе немного убрать твой беспорядок.
Прежде всего, давайте перепишем пустую функцию, чтобы она лучше работала и выглядела лучше:
function empty(value) {
return value === null || value === "" || value === undefined || (value.isArray ? value.length == 0 : false)
}
Теперь предположим, что у вас есть два входа, и вы хотите проверить их значения:
<input id = "input1" type = "text" />
<input id = "input2" type = "text" />
Теперь, используя jQuery, вы выбираете эти входы и отправляете их значения в пустую функцию:
var ids = ['input1' , 'input2'];
for (let id of ids) {
if (empty($('#' + id).val())) {
alert("The input: " + id + " is empty!");
}
}
И это почти все, функция многократного использования, чтобы проверить, пусто ли значение.
хорошо, спасибо за ваше время, опубликованное в качестве ответа. быстрый вопрос, не должно ли оно возвращать истину? потому что если "" произошло, пусто должно == истина
Он возвращает истину, если значение является пустой строкой, значением NULL, неопределенным или в случае, если значение является массивом, если массив пуст (его длина == 0), возвращается истина.
Вот полное решение благодаря тем, кто разместил:
function empty(value) {
return value === null || value === "" || value === undefined || (value.isArray ? value.length == 0 : false)
}
</script>
<script type = "text/javascript">
$(document).on('click','#add_btn',function (){
var ids = ['name'];
for (let id of ids) {
if (empty($('#name').val())) {
alert("Input: " +id+ " is not a valid input");
}
if (!empty($('#name').val())) {
$.ajax({
type:'POST',
url:'add.php',
//dataType: "json",
data: {
"name": $('#name').val(),
"coffee": $('#coffee').val(),
},
success: function(data){
alert(data);
if (data=='ADD_OK') {
location.reload();
} else {
alert('something wrong');
}
}
})
} }
});
</script>
На самом деле нет необходимости в двух «если». Второй if (if (!empty($('#name').val()))
) можно заменить на else в первом if
if ($('#name').val() === undefined || $('#name').val().length == 0){
alert("enter valid input");
}
Предполагая, что вы вводите $('#name')
, это html-ввод.
Первое условие - проверка, есть ли здесь ввод
if (empty($('#name').val())