Move this topic
Get element from parameter in function
in Using jQuery
•
5 years ago
Hi Everyone,
I have to be missing something pretty obvious, but I am out of ideas. I am trying to get the tr from a table (#q34). I am (attempting) to pass the table name as a parameter in to a function. I could be doing a number of things incorrectly as I am a complete noob.
here I am trying to pass the parameter #q34:
- $('.pCardUsedReg input').on('change', function(){
checkPCardCheck("#q34");
Here I trying to use the parameter as if it was text:
- var checkPCardCheck = function(x){
var totalRows = $(x+" tr").length-1;
I have tried several ways to format the parameter in function code to no avail. Thanks in advance!!
1
Replies(7)
Re: Get element from parameter in function
5 years ago
Can you share some of the HTML? Do you want the row where the pCardUsedReg is?
JΛ̊KE
Re: Re: Get element from parameter in function
5 years ago
Whenever the input of .pCardUsedReg is changed, I need it to run the function checkPCardCheck(). So, no, I don't need that row. I am actually gathering all rows in a column when the checkPCardCheck() runs.
I need it to run on multiple tables, so I am trying to set it up where I can pass the tableID into the function. The issue is, the function doesn't run using the parameter. How is my syntax?
- var totalRows = $(x+" tr").length-1;
^where x is the passed parameter.
Thanks Jake
Leave a comment on jakecigar's reply
Re: Get element from parameter in function
5 years ago
Can you share some of the HTML?
If pCardUsedReg is inside the table, you can use $(this).closest("table") to get the table, and no id is needed.
JΛ̊KE
Re: Re: Get element from parameter in function
5 years ago
Thanks Jake. I need the parameter for several other spots in the function.
Here is the entire function. I need to make all the #q34's into variables:
- var checkPCardCheck = function(x){
var totalRows = $x.length-1;
console.log("total rows:"+totalRows);
var allValues = [];
for (var r=1; r<totalRows+1; r++){
console.log("total rows:"+totalRows);
var pCardVal = $('#q34 td:nth-child(1)').closest('tr:nth-child('+r+')').find('td input').is(':checked');
var last4Col = $('#q34 td:nth-child(9)');
var last4Head = $('#q34 th:nth-child(9)');
console.log("PCard Val: "+pCardVal);
allValues.push(pCardVal);
};//for
console.log("All vals: "+allValues);
if ($.inArray(true, allValues)> -1){
//if value is true, show description column
last4Col.show();
last4Head.show();
console.log("true: "+$.inArray(true, allValues));
}
else{//otherwise keep hidden or hide
last4Col.hide();
last4Head.hide();
console.log("false: "+$.inArray(true, allValues));
};
};
Not sure of the best way to share HTML. Here is the table:
- <tr class="form-focused"><td class="col0 hideRowLabel" style="display:none">1<a href="javascript: void(0)" title="Delete" prop="1" class="form-del-field cf-table-delete lfi-times " style="display:none">×</a></td><td data-col="q244" data-title="Use P-Card" class="pCardUsedReg"><label class="cf-col-label" for="Field244(1)">Use P-Card</label><div class="cf-field cf-col1"><div id="Field244(1)"><fieldset class="radio-checkbox-fieldset"><span class="choice"><input name="Field244(1)" id="Field244(1)-0" type="checkbox" value="pcard" vo="e" data-parsley-class-handler="#Field244\(1\)" data-parsley-errors-container="#Field244\(1\)" class="" data-parsley-multiple="Field244(1)" data-parsley-id="377"><label class="form-option-label" for="Field244(1)-0">P-Card</label></span></fieldset></div><input type="hidden" id="Field244(1)_hidden" name="Field244(1)" value="" class=""></div></td><td data-col="q32" data-title="Payable Name"><label class="cf-col-label" for="Field32(1)">Payable Name</label><div class="cf-field"><input type="text" id="Field32(1)" name="Field32(1)" aria-labelledby="Field32(1)" class="singleline cf-xlarge" maxlength="4000" data-list-focus="true" vo="e" data-parsley-id="381"></div></td><td data-col="q35" data-title="Vendor Number"><label class="cf-col-label" for="Field35(1)">Vendor Number</label><div class="cf-field"><input type="text" id="Field35(1)" name="Field35(1)" aria-labelledby="Field35(1)" class="number cf-xlarge" maxlength="4000" vo="e" decimal-disabled="true" separator-disabled="true" data-parsley-valid-format="number"></div></td><td data-col="q36" data-title="Vendor Amount" class="padLeft"><label class="cf-col-label" for="Field36(1)">Vendor Amount</label><div class="cf-field"><span class="margin-end">$</span><input type="text" id="Field36(1)" name="Field36(1)" aria-labelledby="Field36(1)" class="number currency cf-large bfOnKeyupRepeatable" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number"><span aria-hidden="true" class="currencyfix"></span></div></td><td data-col="q37" data-title="Actual Amount"><label class="cf-col-label" for="Field37(1)">Actual Amount</label><div class="cf-field"><span class="margin-end">$</span><input type="text" id="Field37(1)" name="Field37(1)" aria-labelledby="Field37(1)" class="number currency cf-large changeEvent" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number"><span aria-hidden="true" class="currencyfix"></span></div></td><td data-col="q38" data-title="Amount Due"><label class="cf-col-label" for="Field38(1)">Amount Due</label><div class="cf-field"><span class="margin-end">$</span><input type="text" id="Field38(1)" name="Field38(1)" aria-labelledby="Field38(1)" class="number currency cf-large" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number"><span aria-hidden="true" class="currencyfix"></span></div></td><td data-col="q39" data-title="Confirmation Number"><label class="cf-col-label" for="Field39(1)">Confirmation Number</label><div class="cf-field"><input type="text" id="Field39(1)" name="Field39(1)" aria-labelledby="Field39(1)" class="singleline cf-xlarge" maxlength="4000" data-list-focus="true" vo="e"></div></td><td data-col="q40" data-title="Card # (Last 4)" class="regLast4" style="display: none;"><label class="cf-col-label" for="Field40(1)">Card # (Last 4)<span class="cf-required">*</span></label><div class="cf-field"><input type="text" id="Field40(1)" name="Field40(1)" aria-labelledby="Field40(1)" class="number cf-medium" maxlength="4000" vo="e" decimal-disabled="true" separator-disabled="true" data-parsley-valid-format="number" required=""></div></td><td data-col="q42" data-title="Due Date"><label class="cf-col-label" for="Field42(1)">Due Date</label><div class="cf-field"><div class="cf-date-field-date"><input type="text" id="Field42(1)" name="Field42(1)" aria-labelledby="Field42(1)" class="cf-small calendar cf-large hasDatepicker" min="1918-01-01" max="2118-12-31" momentpattern="M/D/YYYY" vo="e" data-parsley-valid-format="date"><img class="ui-datepicker-trigger" src="/Forms/img/calendar.png?v=11.0" alt="Date Selection" title="Date Selection"><div id="error-Field42(1)"></div></div></div></td><td class="action"><a href="javascript: void(0)" title="Delete" prop="1" class="form-del-field cf-table-delete lfi-times " style="display:none">×</a></td></tr>
Leave a comment on jakecigar's reply
Re: Get element from parameter in function
5 years ago
- var checkPCardCheck = function(){
- var theTable = $(this).closest("table");
- var totalRows = theTable.children("tbody").children().length;
- …
- }
- $('.pCardUsedReg input').on('change', checkPCardCheck );
JΛ̊KE
PS it would help to format the HTML. Like…
<tr class="form-focused">
<td class="col0 hideRowLabel" style="display:none">
1
<a href="javascript: void(0)" title="Delete" prop="1" class="form-del-field cf-table-delete lfi-times " style="display:none">
×
</a>
</td>
<td data-col="q244" data-title="Use P-Card" class="pCardUsedReg">
<label class="cf-col-label" for="Field244(1)">
Use P-Card
</label>
<div class="cf-field cf-col1">
<div id="Field244(1)">
<fieldset class="radio-checkbox-fieldset">
<span class="choice">
<input name="Field244(1)" id="Field244(1)-0" type="checkbox" value="pcard" vo="e" data-parsley-class-handler="#Field244\(1\)" data-parsley-errors-container="#Field244\(1\)" class="" data-parsley-multiple="Field244(1)" data-parsley-id="377">
<label class="form-option-label" for="Field244(1)-0">
P-Card
</label>
</span>
</fieldset>
</div>
<input type="hidden" id="Field244(1)_hidden" name="Field244(1)" value="" class="">
</div>
</td>
<td data-col="q32" data-title="Payable Name">
<label class="cf-col-label" for="Field32(1)">
Payable Name
</label>
<div class="cf-field">
<input type="text" id="Field32(1)" name="Field32(1)" aria-labelledby="Field32(1)" class="singleline cf-xlarge" maxlength="4000" data-list-focus="true" vo="e" data-parsley-id="381">
</div>
</td>
<td data-col="q35" data-title="Vendor Number">
<label class="cf-col-label" for="Field35(1)">
Vendor Number
</label>
<div class="cf-field">
<input type="text" id="Field35(1)" name="Field35(1)" aria-labelledby="Field35(1)" class="number cf-xlarge" maxlength="4000" vo="e" decimal-disabled="true" separator-disabled="true" data-parsley-valid-format="number">
</div>
</td>
<td data-col="q36" data-title="Vendor Amount" class="padLeft">
<label class="cf-col-label" for="Field36(1)">
Vendor Amount
</label>
<div class="cf-field">
<span class="margin-end">
$
</span>
<input type="text" id="Field36(1)" name="Field36(1)" aria-labelledby="Field36(1)" class="number currency cf-large bfOnKeyupRepeatable" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number">
<span aria-hidden="true" class="currencyfix">
</span>
</div>
</td>
<td data-col="q37" data-title="Actual Amount">
<label class="cf-col-label" for="Field37(1)">
Actual Amount
</label>
<div class="cf-field">
<span class="margin-end">
$
</span>
<input type="text" id="Field37(1)" name="Field37(1)" aria-labelledby="Field37(1)" class="number currency cf-large changeEvent" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number">
<span aria-hidden="true" class="currencyfix">
</span>
</div>
</td>
<td data-col="q38" data-title="Amount Due">
<label class="cf-col-label" for="Field38(1)">
Amount Due
</label>
<div class="cf-field">
<span class="margin-end">
$
</span>
<input type="text" id="Field38(1)" name="Field38(1)" aria-labelledby="Field38(1)" class="number currency cf-large" maxlength="4000" vo="e" currencyformat="USD" separator-disabled="false" data-parsley-valid-format="number">
<span aria-hidden="true" class="currencyfix">
</span>
</div>
</td>
<td data-col="q39" data-title="Confirmation Number">
<label class="cf-col-label" for="Field39(1)">
Confirmation Number
</label>
<div class="cf-field">
<input type="text" id="Field39(1)" name="Field39(1)" aria-labelledby="Field39(1)" class="singleline cf-xlarge" maxlength="4000" data-list-focus="true" vo="e">
</div>
</td>
<td data-col="q40" data-title="Card # (Last 4)" class="regLast4" style="display: none;">
<label class="cf-col-label" for="Field40(1)">
Card # (Last 4)
<span class="cf-required">
*
</span>
</label>
<div class="cf-field">
<input type="text" id="Field40(1)" name="Field40(1)" aria-labelledby="Field40(1)" class="number cf-medium" maxlength="4000" vo="e" decimal-disabled="true" separator-disabled="true" data-parsley-valid-format="number" required="">
</div>
</td>
<td data-col="q42" data-title="Due Date">
<label class="cf-col-label" for="Field42(1)">
Due Date
</label>
<div class="cf-field">
<div class="cf-date-field-date">
<input type="text" id="Field42(1)" name="Field42(1)" aria-labelledby="Field42(1)" class="cf-small calendar cf-large hasDatepicker" min="1918-01-01" max="2118-12-31" momentpattern="M/D/YYYY" vo="e" data-parsley-valid-format="date"><img class="ui-datepicker-trigger" src="/Forms/img/calendar.png?v=11.0" alt="Date Selection" title="Date Selection">
<div id="error-Field42(1)">
</div>
</div>
</div>
</td>
<td class="action">
<a href="javascript: void(0)" title="Delete" prop="1" class="form-del-field cf-table-delete lfi-times " style="display:none">
×
</a>
</td>
</tr>
Leave a comment on jakecigar's reply
Re: Get element from parameter in function
5 years ago
You have some aria problems too. You should validate your aria attributes.
Re: Re: Get element from parameter in function
5 years ago
Thanks for pointing me in the right direction Jake! I ended up using $(this) as you suggested.
- var checkPCardCheck = function(){
- //function to check array of values and show or hide 'last 4' column. Uses closest table from the pcard checkbox
- var table = $(this).closest('li').find('tbody');//gets the closest table
- var totalRows = table.children().length;
- var allValues = [];
- for (var r=1; r<totalRows+1; r++){
- var pCardVal = table.find('td:nth-child(1)').closest('tr:nth-child('+r+')').find('td input').is(':checked');
- var last4Col = table.find('td:nth-child(9)');
- var last4Head = table.parent().find('th:nth-child(9)');
- allValues.push(pCardVal);
- };//for
- if ($.inArray(true, allValues)> -1){
- //if value is true, show description column
- last4Col.show();
- last4Head.show();
- console.log("true: "+$.inArray(true, allValues));
- }
- else{//otherwise keep hidden or hide
- last4Col.hide();
- last4Head.hide();
- console.log("false: "+$.inArray(true, allValues));
- };
- };//checkPCardCheck function
Leave a comment on jakecigar's reply
Change topic type
Link this topic
Provide the permalink of a topic that is related to this topic
Reply to Chris Cartrett's question
Statistics
- 7 Replies
- 2276 Views
- 1 Followers