1

Okay, so I have the following form fields:

1. [] [] [] x
2. [] [] [] x
3. [] [] [] x
4. [] [] [] x

[rand]

I allow the user to insert random numbers into the forms by clicking "rand":

1. [01] [09] [12] x
2. [03] [12] [13] x
3. [12] [15] [16] x
4. [01] [02] [03] x

[rand]

If the user so desires, they can delete a row and add a new one

1. [01] [09] [12] x
3. [12] [15] [16] x
4. [01] [02] [03] x
5. [] [] []  x

[rand]

Each row is named by its fields:

1. [01] [09] [12] = name=row_name[1][0], row_name[1][0], row_name[1][0]
3. [12] [15] [16] = name=row_name[3][0], row_name[3][0], row_name[3][0]
4. [01] [02] [03] = name=row_name[4][0], row_name[4][0], row_name[4][0]
5. [] [] []       = name=row_name[5][0], row_name[5][0], row_name[5][0]

[rand]

The problem I face is when a user deletes a number of rows, the sequences are now out of order, so instead of: 1,2,3,4 I have: 1,3,4,5

This means my random function will not work on row 5 since it is looking for 1,2,3,4 (in a for loop).

So my dilemma is how best to code this...

On the one hand, I am thinking of re-naming the fields each time a user deletes a row to keep them in sequence: 1,2,3,4

On the other hand I am thinking that I could just ignore the missing fields and improve how I insert the numbers.

The rand function works as follows:

var numbers_per_row = 3;
var total_numbers = 4;
var rows = getRandomNumbers(numbers_per_row,total_numbers);

This returns an array: [
   0 => [01,09,12],
   1 => [03,12,13],
   2 => [12,15,16],
   3 => [01,02,03]
]

Now that I have the array, I next need to insert the random numbers into the form fields:

var total_rows = rows.length();

for (var 1 = 0; i < total_rows; i++) {

    var line = row[i];
    for (var x =0; x < numbers_per_row; x++) {
        var field_name = 'row_name['+(i+1)+']['+x+'];
        $("#formName input[ name='" + field_main + "' ]").val(line[x]);
    }

}

Unfortunately this function does not take into account the missing values that were deleted.

I have been pondering the most logical way to go about this. Any ideas?

2 Answers 2

1

Take an array with the row numbers and delete the number if the row is being deleted. When a new row is inserted, add the row number to the array.

In this way, it is possible to iterate over the array with the row numbers and keep a working system.

Sign up to request clarification or add additional context in comments.

Comments

1

The answer to this questions was pretty simple, thanks to Nina for the suggestions, this is what I did:

  1. I created a row_map (an array with the keys of the form values)
  2. On the create and delete function I added and removed the keys as required leaving the values as they are: [1,2,5,6,8,21,22,100].
  3. When it came to the random number generator, I simply inserter the values at the given map location: which is imply: map[i] = current location...

Simple :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.