Skip to main content
Participant
January 3, 2021
Question

Javascript Dialog Checkbox Undefined

  • January 3, 2021
  • 3 replies
  • 1225 views

I have a form with javascript and I'm trying to add a checkbox to a dialog, but it always returns undefined. The first checkbox works fine, but I cannot figure out why the second one with id "ckbox2" doesn't.  The alert says it's undefined so it never goes into the if statement. I didn't write this code, I'm just trying to add the checkbox, but I don't see where it's wrong, any help is appreciated.

 

Here's the snippet:

function f_getCheck()
{
if(this.getField("numCks").value>9){app.alert("You may only include ten items in a deposit with a hold!");end;}
var y = this.getField("numCks").value;
var z = this.getField("t_Code."+ y).value;
if(z=="E"){f_getCkReason()};
var dialog8 = {
	initialize: function(dialog){
		this.test1 = "";
		this.test2 = "";
},
	validate: function(dialog){
		var val = dialog.store();
		this.test1 = val["rtno"];
		this.test2 = val["iamt"] * 1;
		if(this.test1.length==9&&(this.test1*1)>0&&this.test2>0){
		fcb_ABA(this.test1, this.test2);
		} else {
		app.alert("Routing Numbers must be nine digits and amounts must be greater than zero");
		return false};
		return true;
	},
	commit: function(dialog){
		var results=dialog.store();
		this.RTNum = results["rtno"];
		this.Amt = results["iamt"];
		this.ExCkHold = results["ckbx"];
		this.RetCk = results["ckbox2"];
		app.alert(this.RetCk);
	},
	ok: function(dialog){
		var results=dialog.store();
		dialog.end("ok");

	},

	cancel: function(dialog){
		var results=dialog.store();
		dialog.end("del");

	},
	other: function(dialog){
		var results=dialog.store();
		dialog.end("done");
	},

	loadDefaults: function(dialog){},
	description: {
		name: "Check Entry",
		elements: [{
			type: "view",
			align_children: "align_left",
			elements:[{
				type: "cluster",
				name: "Enter the information for the check.",
				align_children: "align_row",
				elements:[{
					type:"view",
					align_children:"align_left",
					elements:[{
    						type:"static_text",
						name:"Routing/Transit Number"},
						{item_id:"rtno",
						type:"edit_text",
						char_width: 9}
					]},
					{type:"view",
					align_children:"align_left",
					elements:[{
						type:"static_text",
						name:"Amount of item (xxxx.xx)"},
						{item_id:"iamt",
						type:"edit_text",
						char_width: 12}]}]},
						{type:"check_box",
						item_id: "ckbx",
						name: "Check here to exclude from amount on hold and deposit information."},
						{type: "check_box",
						item_id: "ckbx2",
						name: "Check here if this is an Exempt item."},
						{type: "static_text",
						name: "Exempt items include items drawn on state, local, U.S. governments, cashier's checks, and the like.",
						italics:true},
						{type: "ok_cancel_other",
						ok_name: "Add check to deposit",
						cancel_name: "Delete an item",
						other_name: "No more items"}]}]}};

var myResult = app.execDialog(dialog8);
if(myResult=="done"){f_AllDone()};
if(myResult=="cancel"){f_delItems()};
if(myResult=="ok"){
	if(dialog8.ExCkHold==true){
		this.getField("t_Code."+(this.getField("numCks").value-1)).value = "";
		this.getField("ExType."+(this.getField("numCks").value-1)).value="";
		this.getField("RT."+(this.getField("numCks").value-1)).value="";
		this.getField("ckAmt."+(this.getField("numCks").value-1)).value="";
		this.getField("numCks").value--;
	}
	else {
		if(dialog8.RetCk==true){
		this.getField("ExType." + (this.getField("numCks").value-1)).value = "-Exempt-\rOther";
		var xx = this.getField("numCks").value*1-1;
		var xxx = this.getField("t_Code." + xx).value;
		if(xxx=="A"){} else {this.getField("t_Code." + (this.getField("numCks").value-1)).value = "-"};
		if(xxx=="F"){this.getField("t_Code." + (this.getField("numCks").value-1)).value = "F"}
		};
	};
	f_getCheck()
};
}

 

This topic has been closed for replies.

3 replies

Participant
January 4, 2021

I was able to work around this by just creating two new dialogs for each checkbox since really it can only be one or the other, and now it works how it should.

try67
Community Expert
Community Expert
January 3, 2021

You can't call the function from within itself (well, you can, but you'll end up with an endless loop...).

Move the call to f_getCheck() outside of the function definition and try again.

Participant
January 3, 2021

I see, well that was done with the intention that the user could enter multiple checks so the dialog keeps opening until they click done. It didn't cross my mind that could be affecting it

try67
Community Expert
Community Expert
January 3, 2021

You can do that, but then you must add some condition to get out of that loop, and you still need to have one initial call from outside of it.

Participant
January 3, 2021

I realized that the snippet here shows ckbox2 and ckbx2 but regardless even if they're the same it doesn't work