What do you have for now?
GenMOD11 in jQuery
Hello How can I make same function in jQuery
function GenMOD11( $base_val )
{
$result = "";
$weight = array( 2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7 );
$reversed_base_val = strrev( $base_val );
for ( $i = 0, $sum = 0; $i < strlen( $reversed_base_val ); $i++ )
{
$sum += substr( $reversed_base_val, $i, 1 ) * $weight[ $i ];
}
$remainder = $sum % 11;
switch ( $remainder )
{
case 0:
$result = $base_val . 0;
break;
case 1:
$result = "n/a";
break;
default:
$check_digit = 11 - $remainder;
$result = $base_val . $check_digit;
break;
}
return $result;
}
@Sinnbeck php
@www888 So you gave up before you even began trying yourself?
Here let me get you started :)
function GenMOD11( base_val )
{
var result = "";
var weight = [ 2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7,
2, 3, 4, 5, 6, 7 ];
var reversed_base_val = base_val.split('').reverse().join('');
}
@Sinnbeck Yes,
function GenMOD11(base_val) {
var result;
result = "";
var weight;
weight = {
0: 2,
1: 3,
2: 4,
3: 5,
4: 6,
5: 7,
6: 2,
7: 3,
8: 4,
9: 5,
10: 6,
11: 7,
12: 2,
13: 3,
14: 4,
15: 5,
16: 6,
17: 7,
18: 2,
19: 3,
20: 4,
21: 5,
22: 6,
23: 7
};
var reversed_base_val;
reversed_base_val = strrev(base_val);
var i, sum;
__loop1:
for (i = 0, sum = 0; i < strlen(reversed_base_val); i++) {
sum += substr(reversed_base_val, i, 1) * weight[i];
}
var remainder;
remainder = sum % 11;
__loop1:
switch (remainder) {
case 0:
result = base_val.0;
break;
case 1:
result = "n/a";
break;
default:
var check_digit;
check_digit = 11 - remainder;
result = base_val.check_digit;
break;
}
return result;
}
@www888 Good. So which part are you in doubt in regards to? I have shown how to reverse a string.
substr()
reversed_base_val.substr(i, 1)
@Sinnbeck In my code getting error in this line
Uncaught SyntaxError: Unexpected number
result = base_val.0;
@www888 Yeah javascript uses + for concatenation. Be sure its a string to it does not add them as numbers
result = base_val + '0';
Now this : VM2810:40 Uncaught ReferenceError: strrev is not defined
reversed_base_val = strrev(base_val);
@www888 Yeah: I already gave you a solution for that one. https://laracasts.com/discuss/channels/javascript/genmod11-in-jquery?reply=807667
@Sinnbeck Made update, but result is not correct, php giver other result
function GenMOD11(base_val) {
var result;
result = "";
var weight;
weight = {
0: 2,
1: 3,
2: 4,
3: 5,
4: 6,
5: 7,
6: 2,
7: 3,
8: 4,
9: 5,
10: 6,
11: 7,
12: 2,
13: 3,
14: 4,
15: 5,
16: 6,
17: 7,
18: 2,
19: 3,
20: 4,
21: 5,
22: 6,
23: 7
};
var reversed_base_val;
reversed_base_val = base_val.split("").reverse().join("");
var i, sum;
__loop1:
for (i = 0, sum = 0; i < reversed_base_val.length; i++) {
sum += reversed_base_val.substring(i, 1) * weight[i];
}
var remainder;
remainder = sum % 11;
__loop1:
switch (remainder) {
case 0:
result = base_val + '0';
break;
case 1:
result = "n/a";
break;
default:
var check_digit;
check_digit = 11 - remainder;
result = base_val.check_digit;
break;
}
return result;
}
@www888 Give me an input and tell me the expected output
@Sinnbeck Uncaught TypeError: base_val.split is not a function
@www888 again
Give me an input and tell me the expected output
If i call GenMOD11('foobar') I should get what?
Change it with
var reversed_base_val = base_val.toString().split('').reverse().join('');
full code
<script type='text/javascript'>
jQuery(document).ready(function($) {
function GenMOD11(base_val) {
var result;
result = "";
var weight;
weight = {
0: 2,
1: 3,
2: 4,
3: 5,
4: 6,
5: 7,
6: 2,
7: 3,
8: 4,
9: 5,
10: 6,
11: 7,
12: 2,
13: 3,
14: 4,
15: 5,
16: 6,
17: 7,
18: 2,
19: 3,
20: 4,
21: 5,
22: 6,
23: 7
};
// var reversed_base_val;
var reversed_base_val = base_val.toString().split('').reverse().join('');
// reversed_base_val = base_val.split("").reverse().join("");
var i, sum;
__loop1:
for (i = 0, sum = 0; i < reversed_base_val.length; i++) {
sum += reversed_base_val.substring(i, 1) * weight[i];
}
var remainder;
remainder = sum % 11;
__loop1:
switch (remainder) {
case 0:
result = base_val + '0';
break;
case 1:
result = "n/a";
break;
default:
var check_digit;
check_digit = 11 - remainder;
result = base_val.check_digit;
break;
}
return result;
}
alert(GenMOD11(123240657))
});
</script>
return - undefined
You still have a few thing to fix. Js does not automatically convert strings to integers. Use parseInt() to go from string to int.
@Sinnbeck Use
var reversed_base_val = parseInt(base_val.toString().split('').reverse().join(''));
alert(GenMOD11(123240657))
result 1232406570
But this answer is not correct with php it gives 1232406573. It must add last 3 not 0. In JavaScript function not works correct.
Can you help find problem
I think problem is result = base_val + '0'; IT always adding 0
Please or to participate in this conversation.