我已经将一些代码拼凑在一起用于ASP.NET,以防止控件失去对回发的关注,因此一个标签或单击另一个控件可以保存用户位置并将其返回。
在Page_Load中,我有以下内容:
PartNum_tb.Attributes["onfocus"] = "gotFocus(this)";
Department_tb.Attributes["onfocus"] = "gotFocus(this)";
PartWeight_tb.Attributes["onfocus"] = "gotFocus(this)";
Standard_rb.Attributes.Add("onfocus","gotFocus(this)");
Special_rb.Attributes.Add("onfocus","gotFocus(this)");
if (Page.IsPostBack)
Page.SetFocus(tabSelected.Value);
这是我的Javascript(tabSelected是隐藏字段):
<script type="text/javascript">
function gotFocus(control) {
document.getElementById('form1').tabSelected.value = control.id;
if (control.type == "text") {
if (control.createTextRange) {
//IE
var FieldRange = control.createTextRange();
FieldRange.moveStart('character', control.value.length);
FieldRange.collapse();
FieldRange.select();
}
else {
//Firefox and Opera
control.focus();
var length = control.value.length;
control.setSelectionRange(length, length);
}
}
}
</script>
问题是,当我选中或点击其中一个单选按钮时,它会将焦点返回到最后一个控件,而这对于用户来说是不直观和混乱的。这样做是因为RadioButton永远不会获得焦点,因此光标位置不会更新。经过广泛的Google搜索后,似乎无法确定RadioButton 何时获得焦点。是否已知任何解决方案甚至只是解决此问题?
答案 0 :(得分:0)
解决方案可能是在前一个字段中添加keypress
事件,并在无线电上使用click
事件。另外,将control.focus();
移出if
声明:
<强>的Javascript 强>
function changeFocus(next) {
gotFocus(next);
}
function gotFocus(control) {
document.getElementById('form1').tabSelected.value = control.id;
control.focus();
if (control.type == "text") {
if (control.createTextRange) {
//IE
var FieldRange = control.createTextRange();
FieldRange.moveStart('character', control.value.length);
FieldRange.collapse();
FieldRange.select();
}
else {
//Firefox and Opera
var length = control.value.length;
control.setSelectionRange(length, length);
}
}
}