ขอคำปรึกษาหน่อยครับ เรื่องง่ายๆที่ผมยังแก้ไม่ได้ซักทีครับ เกี่ยวกับ กด enter แล้ว focus ครับ
ขอบคุณครับ
ช่วงที่กด Enter แล้วเลื่อน focus ไปเรื่อยๆ ได้แล้วครับ
แต่ติดตรงที่ว่า บางครั้งมันไม่ยอมเลื่อนครับ มันดันไปติด focus ปุ่มแรกสุดของ web ครับ
Date :
2013-11-26 18:30:06
By :
sodamax
ช่วงที่กด Enter แล้วเลื่อน focus ไปเรื่อยๆ ได้แล้วครับ
แต่ติดตรงที่ว่า บางครั้งมันไม่ยอมเลื่อนครับ มันดันไปติด focus ปุ่มแรกสุดของ web ครับ
- เป็นไปไม่ได้ คอมมันเป็นอะไรที่ตรงไปตรงมามากๆๆๆๆ เพราะมันมีแค่ true/false
เดามาปัญหานี้น่าจะเกิดจากตอนกด enter มัน focus อยู่ที่ element อื่นที่ไม่ได้โปรแกรมไว้
มันเลยไปทำงานตรง default button แทน
Date :
2013-11-27 07:50:32
By :
ห้ามตอบเกินวันละ 2 กระทู้
ผมลอง debug ผ่าน firebug ดูครับ
พอผมเอา mouse คลิกที่ช่อง textbox แล้วกด enter
โปรแกรมมันก็ทำตามเงื่อนไขของช่อง textbox นั้น หลังจากนั้นมันก็ไป enter ที่ปุ่มแรกของ form เลยครับ โดยที่มันออกจากฟังก์ชั่นของ Textbox แล้วมันก็เข้าไปที่ jquery-1.10.2.min.js แล้วมันก็ คลิกปุ่มแรกของ form ครับ
ประวัติการแก้ไข 2013-11-27 10:22:59
Date :
2013-11-27 10:21:23
By :
sodamax
Code (C#)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
$('#textfield input:text:first').focus();
$('#textfield input:text').bind('keydown', function (e) {
var key = e.which;
if (key == 13) {
var nxtIdx = $('#textfield input:text').index(this) + 1;
$("#textfield input:text:eq(" + nxtIdx + ")").focus();
if (nxtIdx < $('#textfield input:text').length)
e.preventDefault();
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="textfield">
<asp:TextBox ID="TextBox1" runat="server" Width="50"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" Width="50"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server" Width="50"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server" Width="50"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
Date :
2013-11-27 11:55:10
By :
ห้ามตอบเกินวันละ 2 กระทู้
ทำแบบมัน เลยทำให้สมบูรณ์ขึ้น แบบกด backspace ได้
แล้วก็พิมพ์ครบ 5 ตัวเลื่อนไปช่องใหม่
Code (JavaScript)
<script type="text/javascript" src="Scripts/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
$('#textfield input:text:first').focus();
$('#textfield input:text').attr('maxlength', '5');
$('#textfield input:text').bind('keydown', function (e) {
var key = e.which;
var curIdx = $('#textfield input:text').index(this);
if (key == 13) {
var nxtIdx = curIdx + 1;
if (nxtIdx < $('#textfield input:text').length)
e.preventDefault();
else
$("#textfield input:text:eq(" + nxtIdx + ")").focus();
} else if (key === 8) {
var prvIdx = curIdx - 1;
if ($("#textfield input:text:eq(" + curIdx + ")").val().length == 0)
$("#textfield input:text:eq(" + prvIdx + ")").focus();
} else {
var nxtIdx = curIdx + 1;
if ($("#textfield input:text:eq(" + curIdx + ")").val().length == 5 && curIdx < $('#textfield input:text').length) {
$("#textfield input:text:eq(" + nxtIdx + ")").focus();
}
}
});
});
</script>
Date :
2013-11-27 12:18:39
By :
ห้ามตอบเกินวันละ 2 กระทู้
ขอบคุณครับ เดี๋ยวจะลองไปประยุกต์ดูครับ
Date :
2013-11-28 08:58:46
By :
sodamax
Load balance : Server 00