B. *_*non 10 html javascript css jquery
我有一个"文本框",当用户对"Enter"键进行混淆时,我要将其内容发送到无序列表:
HTML
<input type="text" name="InputUPC" id="InputUPC" />
<ul id="CandidateUPCs" name="CandidateUPCs" class="ulUPCs"></ul>
Run Code Online (Sandbox Code Playgroud)
CSS
.ulUPCs {
min-height:160px;
height:auto !important;
height:160px;
max-width:344px;
width:auto !important;
width:344px;
border-style:solid;
border-width:2px;
}
Run Code Online (Sandbox Code Playgroud)
jQuery的
$('#InputUPC').keypress(function (event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
var upcPrefix = jQuery.trim($("#InputUPC").val());
if (upcPrefix != "") {
$("#CandidateUPCs").append('<li>' + upcPrefix + '</li>');
}
$("#InputUPC").val("");
}
});
Run Code Online (Sandbox Code Playgroud)
当我在"InputUPC"中输入内容并混合密钥时,该值出现在无序列表中,但仅在"短暂的秒"中消失."InputUPC"中的值也会消失,但这是预期的.为什么它也放弃了UL premesis?
这是我最终得到的(http://jsfiddle.net/AEy9x/),主要基于adeneo的答案:
$('#InputUPC').keyup(function (event) {
event.preventDefault();
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
var upcPrefix = jQuery.trim($("#InputUPC").val());
if (upcPrefix != "") {
$("#CandidateUPCs").append('<label for=' + upcPrefix + '>' + upcPrefix + ' </label>');
$("#CandidateUPCs").append('<input type=\"checkbox\" name=' + upcPrefix + ' id=' + upcPrefix + ' />');
$("#CandidateUPCs").append('<br>');
}
$("#InputUPC").val("");
}
});
Run Code Online (Sandbox Code Playgroud)
在jsfiddle中,只要jquery版本高于1.6.4,这就可以工作.
既然如此,我将我的项目更新为jquery 1.9.1(它在一个地方引用了1.4.4版本,在所有其他地方引用了1.6.2).但是,它仍然不起作用......?!?
我看到UL中的val是"闪光灯",但随后又消失了.
注意:我还更新了jquery-ui:
@* <script src="@Url.Content("~/Scripts/jquery-ui-1.8.16.custom.min.js")" type="text/javascript"> </script>*@
<script src="@Url.Content("http://code.jquery.com/ui/1.10.3/jquery-ui.js")" type="text/javascript"> </script>
Run Code Online (Sandbox Code Playgroud)
@sriniris:
同样的事情发生在任何一个代码块(我的第一个; adeneo的第二个),即UL填充一个纳秒,但随后飞行的位数比润滑和抛光的闪电更快:
$('#InputUPC').keyup(function (event) {
event.preventDefault();
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
var upcPrefix = jQuery.trim($("#InputUPC").val());
if (upcPrefix != "") {
$("#CandidateUPCs").append('<label for=' + upcPrefix + '>' + upcPrefix + ' </label>');
$("#CandidateUPCs").append('<input type=\"checkbox\" name=' + upcPrefix + ' id=' + upcPrefix + ' />');
$("#CandidateUPCs").append('<br>');
}
$("#InputUPC").val("");
}
});
$('#InputUPC').on('keyup', function(e) {
e.preventDefault();
if (e.which == 13) {
var upcPrefix = $.trim( this.value );
if (upcPrefix != "") {
var upcElem = $('<li />', {text : upcPrefix});
$("#CandidateUPCs").append(upcElem);
}
this.value = "";
}
Run Code Online (Sandbox Code Playgroud)
问题是,表单被提交,即使有代码,以防止(的preventDefault).我知道这一点,因为当我选择一系列复选框时,它们都会在短暂输入UL的值同时被取消选择.那么"隐喻"的混合物是否存在类似的东西:
e.preventDefault(); ! important
Run Code Online (Sandbox Code Playgroud)
?
我仍然有同样的问题:
$('#InputUPC').keyup(function (event) {
if (event.stopPropagation) { // W3C/addEventListener()
event.stopPropagation();
} else { // Older IE.
event.cancelBubble = true;
}
event.preventDefault();
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
//alert('get the values that start with what was entered and place it in ulUPCStartsWith');
var upcPrefix = jQuery.trim($("#InputUPC").val());
if (upcPrefix != "") {
$("#CandidateUPCs").append('<label for=' + upcPrefix + '>' + upcPrefix + ' </label>');
$("#CandidateUPCs").append('<input type=\"checkbox\" name=' + upcPrefix + ' id=' + upcPrefix + ' />');
$("#CandidateUPCs").append('<br>');
}
$("#InputUPC").val("");
}
});
Run Code Online (Sandbox Code Playgroud)
$('#InputUPC').on('keyup', function(e) {
e.preventDefault();
if (e.which == 13) {
var upcPrefix = $.trim( this.value );
if (upcPrefix != "") {
var upcElem = $('<li />', {text : upcPrefix});
$("#CandidateUPCs").append(upcElem);
}
this.value = "";
}
});
Run Code Online (Sandbox Code Playgroud)