2010-09-02 5 views
0
userName = Global.getComponent('centerRegion').UserName.getValue(); 

ce code apparaît avec l'erreurJavascript ne tire pas la valeur de la forme

{"browserEvent":"'Global.getComponent(...).UserName' is null or not an object","button":-1,"ctrlKey":false,"xy":[0,0]} 

Lorsque je l'exécute sur ce formulaire:

Using Form As New WebControls.Forms.Form 
       With Form 
        .ID = "Test" 
        .ItemName = "connector" 
        With .Toolbar 
         .UseDefaultButtons = False 
         .AddButton(Forms.FormToolbar.ButtonType.Save) 
         .AddButton(Forms.FormToolbar.ButtonType.Cancel) 
         .AddButton("Test Connection", "testConnection", "icon-button-testconnection", , "Test") 
        End With 

        With .CenterRegion 
         .Id = "centerRegion" 
         With .AddFieldSet("Activate Service") 
          .Id = "activate" 
          .LabelWidth = 0 
          Dim cb As New Forms.Control("IsActive", "", "", Model.IsActive, Forms.Control.ControlType.CheckBox) 
          cb.BoxLabel = "Activate Service" 
          .AddControl(cb) 
         End With 

         With .AddFieldSet("Connection Parameters") 
          .Id = "params" 
          .LabelWidth = 150 
          .AddControl(New Forms.Control("UserName", "", "User Name", Model.UserName, Forms.Control.ControlType.TextField)) 
          .AddControl(New Forms.Control("Password", "", "Password", Model.Password, Forms.Control.ControlType.Password)) 
          .AddControl(New Forms.Control("LoginUrl", "", "URL", Model.LoginUrl)) 
         End With 
        End With 
        Response.Write(.ToString) 
       End With 
      End Using 

Tout apparaît et enregistre correctement de la forme sur l'écran, donc la valeur est là, mais je pense que mon Javascript est faux de le tirer.

Edit:

HTML généré:

xtype:'fieldset' 
,title:'Connection Parameters' 
,id:'params',autoHeight:true 
,titleCollapse:true 
,border:true 
,collapsible:false 
,labelWidth:139 
,anchor:'100%' 
,items:[ 
{xtype:'textfield',validationEvent:'blur',enableKeyEvents:true,anchor:'100%',value:'IDWSSample',fieldLabel:'User Name',itemId:'UserName',name:'UserName',allowDecimals:false,decimalPrecision:0,validator:function(value){var isCustomValid = true;if (this.ux_isInitialized == true) {isCustomValid = function(value){if (value.match(/<[a-zA-Z!\/]{1}/)) return 'If using the "<" character, it must not be followed by "!" or "/" or any letter.';if (value.match(/.*&#.*/)) return 'If using the "&" character, it must not be followed by "#".';return true;}(value);if (typeof(isCustomValid) == 'string') return isCustomValid;}if (isCustomValid == null) isCustomValid = true;return isCustomValid;}} 
, 
{xtype:'textfield',validationEvent:'blur',enableKeyEvents:true,anchor:'100%',value:'TcYg7m*a',fieldLabel:'Password',itemId:'Password',name:'Password',allowDecimals:false,decimalPrecision:0,inputType:'password' 
} 
, 
{xtype:'textfield',validationEvent:'blur',enableKeyEvents:true,anchor:'100%',value:'http://sample.idws.syndication.kbb.com/VehicleInformationService2008R2.svc?wsdl',fieldLabel:'URL',itemId:'LoginUrl',name:'LoginUrl',allowDecimals:false,decimalPrecision:0,validator:function(value){var isCustomValid = true;if (this.ux_isInitialized == true) {isCustomValid = function(value){if (value.match(/<[a-zA-Z!\/]{1}/)) return 'If using the "<" character, it must not be followed by "!" or "/" or any letter.';if (value.match(/.*&#.*/)) return 'If using the "&" character, it must not be followed by "#".';return true;}(value);if (typeof(isCustomValid) == 'string') return isCustomValid;}if (isCustomValid == null) isCustomValid = true;return isCustomValid;}} 
, 
{xtype:'combo_transform',validationEvent:'blur',enableKeyEvents:true,anchor:'100%',fieldLabel:'Market Value',id:'ddlMarketValues',itemId:'ddlMarketValues',name:'ddlMarketValues',allowDecimals:false,decimalPrecision:0,id:'EXT_ddlMarketValues' 
,el:null 
,typeAhead:true 
,triggerAction:'all' 
,transform:'ddlMarketValues' 
,forceSelection:true 
,selectOnFocus:true 
,lazyRender:true 
,resizable:true 
,editable:false 

Répondre

0

Je ne sais pas où la méthode Global.getComponents est de, mais je pense que vous avez là une faute de frappe ou vous n'accédez pas à correctement la valeur du champ. Essayez de trouver le champ avec javascript régulier ou encore plus facile avec jQuery.

essayer:

var userName = document.getElementById('UserName').value; 

ou avec jQuery:

var userName = $("#UserName").val(); 

... en supposant 'centerRegion' et 'UserName' sont des valeurs id des éléments sur votre page.

Si vous ne l'utilisez jQuery, vous pouvez essayer le chemin de asp.net:

var userName = $find('UserName','centerRegion').value; 
+0

Lorsque j'essaie la recherche $, il est dit que $ find n'est pas défini. Lorsque j'essaie la première suggestion, j'obtiens cette erreur "document.getElementById (" UserName ") est null" – Scott

+1

Assurez-vous que vous avez un objet ScriptManager dans votre page aspx afin que vous puissiez utiliser $ find. null from document.getElementById signifie que "UserName" n'est pas la valeur réelle de l'identifiant. C'est probablement quelque chose comme "ctl00_UserName". Vous pouvez y accéder en injectant la valeur ClientID du contrôle dans le script de la page dans le code côté serveur. – Silkster

+0

Je n'ai toujours pas réussi à faire fonctionner ça. Des idées? – Scott

1

Voir le code source résultant et vérifiez le nom généré par ASP.NET pour centerRegion. En fonction de votre version d'ASP.NET, des suffixes générés automatiquement peuvent être ajoutés au nom.

Si c'est le cas, mettez à jour le nom pour qu'il corresponde à celui qui est généré et voyez si cela le corrige.

Questions connexes