Jquery .value return 在函数中未定义到 return 输入值
Jquery .value returning undefined in function to return input value
我知道这将是非常基础的,因为我可以理解这应该是多么简单 - 但我把自己搞得一团糟。
我只是想制作一个搜索栏功能。这是输入 -
<input class="form-control me-2 header__searchbar comic__search" type="search" placeholder="Search" aria-label="Search" style="width: 15rem; margin-left: 2rem;">
这是代码(到目前为止),但我无法将其设为 return 值。
var searchbar = $(".comic__search");
var searchBarVal = ""
$("body").on("keyup", searchbar, function() {
searchBarVal = searchbar.value;
console.log(searchbar.value);
})
谢谢大家
这里有两个不同的问题。
首先,您不能通过在 on()
的第二个参数中提供 jQuery 对象来添加委托事件处理程序,因此事件没有被正确绑定(它将适用于 .comic__search
元素绑定事件时 DOM 中的元素,但不是稍后动态创建的元素,这是委托处理程序的要点)。将 searchbar
更改为字符串。
其次jQuery的方法是val()
,不是value
。
var searchBarVal = "";
$("body").on("keyup", '.comic__search', function() {
searchBarVal = $(this).val();
})
$('button').on('click', () => console.log(searchBarVal));
input {
width: 15rem;
margin-left: 2rem;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control me-2 header__searchbar comic__search" type="search" placeholder="Search" aria-label="Search" />
<button>Check value</button>
最后,请注意您在这里 'returning' 没有任何内容,您只是在更新更高范围内的变量。
只需将 .value
替换为 .val()
因为 searchbar
是一个 jQuery
对象。
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", searchbar, function() {
searchBarVal = searchbar.val();
console.log(searchbar.val());
});
在您的示例中,searchbar 是一个 jquery 对象,要访问 jquery 对象中 html 输入元素的值,您必须调用函数 val():
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", function() {
searchBarVal = searchbar.val();
console.log(searchbar.val());
})
或直接通过 jquery 包装器访问 html 元素:
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", function() {
searchBarVal = searchbar.get(0).value;
console.log(searchbar.get(0).value);
})
可选地,您也可以直接访问对象而无需任何 jquery:
var searchbar = document.querySelector(".comic__search");
var searchBarVal = "";
btn.addEventListener('keyup', function() {
searchBarVal = searchbar.value;
console.log(searchbar.value);
})
我知道这将是非常基础的,因为我可以理解这应该是多么简单 - 但我把自己搞得一团糟。
我只是想制作一个搜索栏功能。这是输入 -
<input class="form-control me-2 header__searchbar comic__search" type="search" placeholder="Search" aria-label="Search" style="width: 15rem; margin-left: 2rem;">
这是代码(到目前为止),但我无法将其设为 return 值。
var searchbar = $(".comic__search");
var searchBarVal = ""
$("body").on("keyup", searchbar, function() {
searchBarVal = searchbar.value;
console.log(searchbar.value);
})
谢谢大家
这里有两个不同的问题。
首先,您不能通过在 on()
的第二个参数中提供 jQuery 对象来添加委托事件处理程序,因此事件没有被正确绑定(它将适用于 .comic__search
元素绑定事件时 DOM 中的元素,但不是稍后动态创建的元素,这是委托处理程序的要点)。将 searchbar
更改为字符串。
其次jQuery的方法是val()
,不是value
。
var searchBarVal = "";
$("body").on("keyup", '.comic__search', function() {
searchBarVal = $(this).val();
})
$('button').on('click', () => console.log(searchBarVal));
input {
width: 15rem;
margin-left: 2rem;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control me-2 header__searchbar comic__search" type="search" placeholder="Search" aria-label="Search" />
<button>Check value</button>
最后,请注意您在这里 'returning' 没有任何内容,您只是在更新更高范围内的变量。
只需将 .value
替换为 .val()
因为 searchbar
是一个 jQuery
对象。
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", searchbar, function() {
searchBarVal = searchbar.val();
console.log(searchbar.val());
});
在您的示例中,searchbar 是一个 jquery 对象,要访问 jquery 对象中 html 输入元素的值,您必须调用函数 val():
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", function() {
searchBarVal = searchbar.val();
console.log(searchbar.val());
})
或直接通过 jquery 包装器访问 html 元素:
var searchbar = $(".comic__search");
var searchBarVal = "";
$("body").on("keyup", function() {
searchBarVal = searchbar.get(0).value;
console.log(searchbar.get(0).value);
})
可选地,您也可以直接访问对象而无需任何 jquery:
var searchbar = document.querySelector(".comic__search");
var searchBarVal = "";
btn.addEventListener('keyup', function() {
searchBarVal = searchbar.value;
console.log(searchbar.value);
})