Konflikt med genvejstaster på faneblade og TextBox'e, + javascript
Hej,Jeg har et problem med genvejstaster på en webside.
Generel info:
Jeg bruger AjaxControlToolkit samt lidt javascript. Jeg kan/må ikke tage mere ind på nuværende tidspunkt. Visual Studio 2008 + asp.net.
Jeg har en relativt simpel asp.net side med faneblade hvor jeg har genvejstaster tilknyttet med nedenstående javascript. Desuden er der også javascript til TextBoxen med kalender tilknyttet.
Faneblade vælges med tryk på 1,2,3,4 eller 5 - uden brug af alt (da jeg ikke kan få det til at virke med fx. alt+1). Problemet er at når jeg taster i en TextBox så fanges indtastningen istedet som genvej og der skiftes faneblad. Dette sker dog ikke for alle mine textboxes.
TextBox'ene kan jeg dele op i 3 scenarier, hvor 1. virker som jeg ønsker det, mens 2 og 3 ikke gør:
1. TextBox - med tilknyttet MaskedEditExtender: [[/i]her virker det[/i]; dvs. jeg kan taste tal uden at det bliver fanget som genvejstast]
<asp:TextBox ID="TextBoxGebyr" Text="" CssClass="pengeFelt" runat="server" AccessKey="g"></asp:TextBox>
<ajaxControl:MaskedEditExtender ID="MaskedEditExtender1" runat="server" TargetControlID="TextBoxGebyr" Mask="99,999" MessageValidatorTip="true" MaskType="Number" InputDirection="RightToLeft" AutoComplete="false" AcceptNegative="None" />
2. TextBox - (Multiline) - genvejstaster fanges før input til textbox
<asp:TextBox ID="TextBoxMultiline" runat="server" TextMode="MultiLine" ShortcutsEnabled="false" CssClass="IndtastningsFelt1024"></asp:TextBox>
3. TextBox - med tilknyttet CalendarExtender: genvejstaster fanges før input til textbox
<asp:TextBox ID="TextBoxCalendarAcceptDate" runat="server" Width="100px" AccessKey="a"></asp:TextBox>
<asp:Image ID="imageCalendarTil" runat="server" ImageUrl="~/images/icon_calendar.gif" ImageAlign="Top" />
<ajaxControl:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBoxCalendarAcceptDate"
PopupButtonID="imageCalendarTil"></ajaxControl:CalendarExtender>
Jeg tænkte først at jeg kunne tilføje en MaskedEditExtender til 2 og 3 også. Men det virker vist ikke for i hvert fald 3. For scenarie 2. kan det virke men så skal jeg vist angive en maske med 1000 "?" (1000 spørgsmålstegn) - da man kan indtaste op til 1000 tegn. Med mindre der er en anden måde at angive det på?
For scenarie 3: så får jeg ikke noget output hvis jeg tilføjer en MaskedEditExtender som denne (dvs. at der må være fejl i html outputtet):
<ajaxControl:MaskedEditExtender ID="MaskedEditExtender3Test" runat="server" TargetControlID="TextBoxCalendarAcceptDate" Mask="99-99-9999" MessageValidatorTip="true" MaskType="Date" InputDirection="RightToLeft" AutoComplete="false" AcceptNegative="None" />
Link til maskededit:
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/maskededit/maskededit.aspx
Nogen som kan fortælle mig hvordan jeg vil kan løse problemet så jeg kan taste tal også i scenarie 2. og 3. - uden at det bliver fanget af javascriptet og dermed bliver til genvej?
Eller bliver jeg nødt til at fjerne genvejstasterne for fanebladene, hvilket jeg synes vil være en skam.
På forhånd mange tak!
--------------------------------------------------
//
function DateField_KeyDown(dateField, calendarExtenderName) {
lastKeyCodeEntered = window.event.keyCode;
if ((lastKeyCodeEntered == '37') //keyCode 37=left arrow
|| (lastKeyCodeEntered == '38') //keyCode 38=up arrow
|| (lastKeyCodeEntered == '39') //keyCode 39=right arrow
|| (lastKeyCodeEntered == '40')) //keyCode 40=down arrow
{
var dtbehav = $find(calendarExtenderName);
var enteredDate = dtbehav.get_selectedDate();
if (enteredDate == null) {
enteredDate = new Date();
}
else {
advanceValue = 0;
switch (lastKeyCodeEntered) {
case 37:
advanceDays = -1;
break;
case 38:
advanceDays = -7;
break;
case 39:
advanceDays = 1;
break;
case 40:
advanceDays = 7;
break;
}
enteredDate.setDate(enteredDate.getDate() + advanceDays);
}
dateField.value = (enteredDate.getMonth() + 1) + "/" + enteredDate.getDate() + "/" + enteredDate.getFullYear();
dtbehav.set_selectedDate(dateField.value);
}
}
// tabulator for besvar faneblade.
function ShortcutKeysBesvar(e)
{
var evt = e || window.event
// alert(evt.type);
// alert(event.keyCode);
// you have to use the TabContainer's ID that is in the "View Source" of the rendered page where the TabContainer is located.
var tabContainer = $find('ctl00_contentPlaceHolderMain_ctl00_rykningsforespoergselAndBesvarelseViewPartRykningsforespoergselAndBesvarelse_TabContainerModtagOgBesvarRykning')
//alert("tabContainer= " + tabContainer)
document.defaultAction = false;
// 1 Pressed For Tab 1
if (window.event.keyCode == 49)
//alert(window.event.keyCode); used to see if I got the right value
{
tabContainer.set_activeTabIndex(0); //Sets to Tab 1
}
// 2 Pressed For Tab 2
if (event.keyCode == 50) {
tabContainer.set_activeTabIndex(1); //Sets to Tab 2
}
// 3 Pressed For Tab 3
if (event.keyCode == 51) {
tabContainer.set_activeTabIndex(2);
}
// 4 Pressed For Tab 4
if (event.keyCode == 52) {
tabContainer.set_activeTabIndex(3);
}
// if (event.keyCode == 53 || event.keyCode == 98) { // b = 98 - det virker men foreløbig kun tal.
if (event.keyCode == 53) { // b = 98
tabContainer.set_activeTabIndex(4);
}
}
// shortcuts til tabulator for Kontroller betingelser faneblade.
function ShortcutKeysKontroller(e) {
var evt = e || window.event
// alert(evt.type);
// alert(event.keyCode);
// you have to use the TabContainer's ID that is in the "View Source" of the rendered page where the TabContainer is located.
var tabContainer = $find('ctl00_contentPlaceHolderMain_ctl00_rykningsforespoergselAndKontrollerBetingelserViewPart_TabContainerKontrollerBetingelser')
//alert("tabContainer= " + tabContainer)
document.defaultAction = false;
// 1 Pressed For Tab 1
if (window.event.keyCode == 49)
//alert(window.event.keyCode); used to see if I got the right value
{
tabContainer.set_activeTabIndex(0); //Sets to Tab 1
}
// 2 Pressed For Tab 2
if (event.keyCode == 50) {
tabContainer.set_activeTabIndex(1); //Sets to Tab 2
}
}