You're trying to set the 'opid' property of opid[0] when it doesn't
exist. You should either create an object in that position first:
opid[i] = {};
opid[i]['opid'] = $(this).attr("id").substr(9);

Or just save it directly to the index (like a simple array):
opid[i] = $(this).attr("id").substr(9);

A few recommendations:

use the array literal instead of new Array():
var opid = [];

Try to rely less on slicing your ID to match other elements, use
classes and tagnames instead:

$('#'+userid').each(function(){
   $(this).find(':checkbox')...
   $(this).find('input.pa')...
});

That way your code will be less prone to errors.

On Jun 26, 4:11 pm, Lee <leejohnhan...@googlemail.com> wrote:
> Can someone help me to get opid to be populated. The selectors all
> work correctly, and the code cycles the correct elements (tested this
> with an alert). Problem is I need to get the values I cycle in the
> each statement out and into the wrapping click function.
>
> Anyhelp would be appreciated. At the moment I get an opid[i] undefined
> error.... Thanks for any help you can offer
>
>         var opid = new Array();
>
>         $("a.btn.submit").click(function(){
> //              alert($(this).attr("id").substr(7));
>                 var userid = $(this).attr("id").substr(4);
>
>                 $("#"+userid+" input:disabled").each(function(i){
>                 //      var opid = new Array();
>                         
> if($("#chk_"+$(this).attr("id").substr(9)).is(":checked"))
>                         {
>
>                                 if 
> ($("#pa_"+$(this).attr("id").substr(9)).val() == '')
>                                 {
>                                         //display error,
>                                         alert("If you have selected to submit 
> a PO you must give it a
> weighting");
>                                         var error = 1;
>                                 }
>                                 else
>                                 {
>                                         alert($(this).attr("id").substr(9)+" 
> "+$(this).val()+" "+$("#pa_"+
> $(this).attr("id").substr(9)).val())
>                                         opid[i]['opid'] = 
> $(this).attr("id").substr(9);
>                                         alert(opid[i]['opid']);
>                                 }
>                         }
>                         else
>                         {
> //                              alert("not selected");
>                         }
>
>                         i++
>                 });
>         });

Reply via email to