diff --git a/assets/js/cat.js b/assets/js/cat.js
index c2dd15ad8..be0e6e27d 100644
--- a/assets/js/cat.js
+++ b/assets/js/cat.js
@@ -593,6 +593,11 @@ $(document).ready(function() {
// Build icon with Bootstrap color class and ID for animation
var icon = '';
var html = baseStyle + icon + content + '
';
+ if (($(".radios option:selected").val() == 'ws') && (data.radio != undefined)) { // Are we on websocket? add hiddenfield with radioName
+ $("#radio_ws_name").val(data.radio);
+ } else {
+ $("#radio_ws_name").val('');
+ }
// Update DOM based on global CAT_COMPACT_MODE setting
if (window.CAT_COMPACT_MODE === 'icon-only') {
diff --git a/assets/js/sections/contesting.js b/assets/js/sections/contesting.js
index 1d57e53aa..f4902672d 100644
--- a/assets/js/sections/contesting.js
+++ b/assets/js/sections/contesting.js
@@ -548,6 +548,17 @@ $('#radio').change(function () {
}
});
+// Handle manual frequency entry - sync visible field to hidden field
+$('#freq_calculated').on('change', function() {
+ // set_new_qrg() is defined in qrg_handler.js and will:
+ // 1. Parse the frequency value and convert to Hz
+ // 2. Update #frequency (hidden field)
+ // 3. Update #band selector to match the frequency
+ if (typeof set_new_qrg === 'function') {
+ set_new_qrg();
+ }
+});
+
function setSerial(data) {
var serialsent = 1;
if (data.serialsent != "") {