Wanikani Multiple Answer Input

Input multiple readings/meanings

  1. // ==UserScript==
  2. // @name Wanikani Multiple Answer Input
  3. // @namespace mempo
  4. // @version 1.0
  5. // @description Input multiple readings/meanings
  6. // @author Mempo
  7. // @match https://www.wanikani.com/review/session
  8. // @match http://www.wanikani.com/review/session
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. console.log("/// START OF WKMAI");
  16. $('input#user-response').on('keydown',function(event){
  17.  
  18. if (event.keyCode === 13){
  19. //event.preventDefault();
  20. event.stopPropagation();
  21. console.log("/// WKMAI: PROPAGATION: " + event.isPropagationStopped());
  22. var WKMAI;
  23. var wrong = false;
  24. if($.jStorage.get("questionType")==="meaning"){
  25. WKMAI = ["en","syn"];
  26. }else{
  27. WKMAI = ["kana","kana"];
  28. }
  29. $('input#user-response')[0].value.split(/[;]|[ ]{2,}/).forEach(function(element){
  30. if(element !== "" &&
  31. $.jStorage.get('currentItem')[WKMAI[0]].indexOf(capitalize(element.trim())) === -1 &&
  32. $.jStorage.get('currentItem')[WKMAI[1]].indexOf(capitalize(element.trim())) === -1 ){
  33. console.log(element + " is wrong!");
  34. wrong = true;
  35. }
  36. });
  37. if(!wrong){
  38. $('input#user-response')[0].value = $('input#user-response')[0].value.split(/[;]|[ ]{2,}/)[0];
  39. }
  40. $("#answer-form form button").click();
  41.  
  42. }
  43.  
  44. });
  45. function capitalize(str){
  46. return str[0].toUpperCase() + str.substr(1);
  47. }
  48. })();